Jump to content


  • Posts

  • Joined

  • Last visited


79 Excellent

About Airavat

  • Rank
    (1) Prestidigitator
    (1) Prestidigitator
  1. Thank you for taking the time out to test things. Unfortunate that it isn't simple enough to be implemented, but it's not the end of the world.
  2. Thank you so much for your reply. I was beginning to think that this was going to be the case. Will make the necessary changes. Edit: Well the good news is that Monastic Unarmed Training bonuses are now applying, thanks for that tip, but the Haymaker modal is still not visible. Could I have entered the wrong ID for ProficientAbilityID? It was the only one I could find.
  3. Hello there, I have been trying to modify the Spiritshifted "Weapons" to use the Unarmed tag and proficiency. The expectation is that this would activate Monastic Unarmed Training/Transcendent Suffering and the Haymaker modal while Spiritshifted. However even after setting EquipmentType to Unarmed and setting the ProficientAbilityID to Haymaker, it doesn't seem to work. Devoted bonuses are applying which means something is working. I would be grateful for any guidance. Please find the code below for the Attack data: { "GameDataObjects": [ { "$type": "Game.GameData.AttackMeleeGameData, Assembly-CSharp", "DebugName": "Druid_Stag_Claws", "ID": "fedd4e11-8c15-46cc-ba28-31aebcd762c9", "Components": [ { "$type": "Game.GameData.AttackBaseComponent, Assembly-CSharp", "KeywordsIDs": [ "a39ed49e-b2d2-4d64-90cb-faaedf80dce3" ], "AttackDistance": 0.75, "MinAttackDistance": 0, "AttackVariationID": "35abdf41-fc3f-4310-8d5d-5d7da644affc", "UseParentEquippableHand": "false", "CastSpeedID": "eacb53e3-6eb5-422a-92ca-99cc883ae4a9", "RecoveryTimeID": "566840d9-1561-4243-8ca7-889df9869847", "OverrideTacticalActionType": "None", "ImpactDelay": 0, "ForcedTarget": "None", "AffectedTargetType": "All", "AffectedTargetConditional": { "Conditional": { "Operator": 0, "Components": [] } }, "AffectedTargetDeathState": "Alive", "HostilityOverride": "Default", "PushDistance": 0, "FaceTarget": "true", "AccuracyBonus": 0, "PenetrationRating": 9, "DamageData": { "DamageType": "Pierce", "AlternateDamageType": "None", "Minimum": 13, "Maximum": 19, "TacticalMinimumOverride": 0, "TacticalMaximumOverride": 0, "DamageProcs": [] }, "Require****Object": "true", "StatusEffectKeywordsIDs": [], "StatusEffectsIDs": [], "RandomizeStatusEffect": "false", "CanGraze": "false", "CanCrit": "true", "DefendedBy": "Deflect", "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", "AdditionalAttackOnTooltip": "false", "DoesNotApplyDamage": "false", "TreatAsWeapon": "true", "BounceData": { "Bounces": 0, "Multiplier": 0.5, "Range": 10, "InRangeOrder": "false", "NoRepeatTargets": "false", "AlwaysBounceAtEnemies": "false", "Delay": 0, "NeverBounce": "false" }, "AttackValidityConditional": { "Conditional": { "Operator": 0, "Components": [] } } }, { "$type": "Game.GameData.AttackMeleeComponent, Assembly-CSharp", "EngagementRadius": 1, "IsUnarmed": "true" } ] } ] } Also find the Weapon data code: { "GameDataObjects": [ { "$type": "Game.GameData.WeaponGameData, Assembly-CSharp", "DebugName": "Druid_Stag_Claws", "ID": "4c797511-68f8-4407-87d8-8e0e9ac40060", "Components": [ { "$type": "Game.GameData.ItemComponent, Assembly-CSharp", "DisplayName": 1819, "DescriptionText": 1822, "DescriptionTextTactical": -1, "FilterType": "Weapons", "InventoryAudioEventListID": "705deb97-3f84-48c8-a84b-e3c34e2d0e3a", "IsQuestItem": "false", "IsIngredient": "false", "IsCurrency": "false", "IsAdventuringItem": "false", "IsJunk": "false", "CanSellForFullValue": "false", "MaxStackSize": 1, "NeverDropAsLoot": "true", "CanBePickpocketed": "false", "IsUnique": "false", "Value": 0, "IconTextureSmall": "gui/icons/items/ingredients/stag_horn_s.png", "IconTextureLarge": "gui/icons/items/ingredients/stag_horn_l.png", "PencilSketchTexture": "", "InspectOnUseButton": [], "IsPlaceholder": "false" }, { "$type": "Game.GameData.EquippableComponent, Assembly-CSharp", "EquipmentType": "Unarmed", "EquipmentSlot": "AnyWeapon", "AppearancePiece": { "ModelVisualDataPath": "" }, "ItemModsIDs": [ "9691785d-0207-492a-9c88-47f9a86db8af" ], "OnEquipVisualEffects": [], "RestrictedToClassIDs": [], "RestrictedToPlayer": "false", "EquipConditionals": { "Operator": 0, "Components": [] }, "ProficientAbilityID": "b863a8c3-ed3b-4787-8b3f-2bdea96c47a1", "CannotUnequip": "false", "ItemRendererPrefab": "", "ItemModel": "", "AnimationController": "", "PaperdollOverrideRenderer": "", "AttackSummonID": "00000000-0000-0000-0000-000000000000", "CannotSheathe": "false", "PropVisualEffects": [] }, { "$type": "Game.GameData.WeaponComponent, Assembly-CSharp", "Stance": "Unarmed", "AnimationStanceID": "00000000-0000-0000-0000-000000000000", "StatusEffectsOnLaunchIDs": [], "IsDisplayedWhenAlternate": "true", "IsUniversalType": "false", "AttackID": "fedd4e11-8c15-46cc-ba28-31aebcd762c9", "NoiseLevelID": "15743f94-1026-40b0-8e13-a667b3f66f63", "ForceBackScabbard": "false", "ScabbardAppearancePiece": { "ModelVisualDataPath": "" }, "ScabbardRendererPrefab": "", "ScabbardModel": "", "AudioEventListID": "af7e82ea-8a9d-4fb9-bdb8-15f212f9fd11" } ] } ] } Thank you Regards
  4. Here is an attempt, criticism is welcome and required. Thank you Regards
  5. The way I'm doing it currently is by adding root-level objects according to their $type value. I chose to do it this way because I didn't have perfect information on the objects' structure, and if some $types wouldn't require me to add a lot of extra form controls because of extra components they may contain. Also this way I have the most control over what shows in the list and what will not be included in the query as unimportant to modders. I imagine that in a perfect setup the editor users will only see the stuff in the lists and in the detail views which they "need in the majority of situations". So as a result, I am currently using a function that's like this: determineGameDataQueryOptions(dbName: string): string[] { switch (dbName) { case 'characters': return [this.gameDataObjectTypes.CHARACTERSTATS]; case 'progressiontables': return [this.gameDataObjectTypes.PROGRESSIONTABLE]; case 'abilities': return [this.gameDataObjectTypes.ABILITY, this.gameDataObjectTypes.SPECIALABILITY]; case 'attacks': return [ this.gameDataObjectTypes.RECOVERYTIME, this.gameDataObjectTypes.ATTACK_AOE, this.gameDataObjectTypes.ATTACK_AURA, this.gameDataObjectTypes.ATTACK_BEAM, this.gameDataObjectTypes.ATTACK_FIREARM, this.gameDataObjectTypes.ATTACK_GRAPPLE, this.gameDataObjectTypes.ATTACK_MELEE, this.gameDataObjectTypes.ATTACK_PULSEDAOE, this.gameDataObjectTypes.ATTACK_RANDOMAOE, this.gameDataObjectTypes.ATTACK_RANGED, this.gameDataObjectTypes.ATTACK_SUMMON, this.gameDataObjectTypes.ATTACK_SUMMONRANDOM, this.gameDataObjectTypes.ATTACK_TELEPORT, this.gameDataObjectTypes.ATTACK_BEAMTELEPORT, this.gameDataObjectTypes.ATTACK_TELEPORT, this.gameDataObjectTypes.ATTACK_HAZARD, this.gameDataObjectTypes.ATTACK_MASTERSCALL, this.gameDataObjectTypes.ATTACK_WALL ]; case 'statuseffects': return [this.gameDataObjectTypes.STATUSEFFECT, this.gameDataObjectTypes.AFFLICTION]; } } It's tempting to just filter them by their first component's type as you suggest, but my concern is that if I just include every object that has a Game.GameData.GenericAbilityComponent, I may offer objects in the editor for which I don't yet have all the appropriate form controls, and this may confuse users. I've looked over part of the objects in abilities.gamedatabundle and some seem to have modding-relevant data in their components after the GenericAbilityComponent. The short answer is yes The long one is that you need to replicate objects in many of the files, if you want to build a custom class, with its own full set of abilities and their own effects. It's doable but it's a lot of work, for some of which the editor can help you, but not for everything. It would help if you are very proficient with the game first, so you know what capabilities the game's rules offer your character, and you can better design and balance its abilities and their effects. Thank you for your quick reply.
  6. Possible noob question, but wanted to know if it is possible to create a custom class? Maybe not with this tool but with the current modding potential.
  7. Hello- So sorry that you spent your time on it, thank you very much for trying. A very generous offer, I'll see what else I can find. How about this? Not exactly a match for the armor, but a great elf archer. Here you go. I added a little shade to the portrait background under the impression that it will be better in-game but obviously the final decision is yours. Regards
  8. Tried a thing or two and I think it looks ok enough to use. Regards I made a small edit to the watercolor variants.
  9. Tried a thing or two and I think it looks ok enough to use. Regards
  10. I attempted a colorization. I also added the "sm" and "si" variants out of force of habit. Regards
  • Create New...