This is my personal blog its main purpose is just as a sort of work log for myself, but maybe someone might find some part of it interesting or useful at some point. I started keeping this log back in July 2025, but it was just on a text file on my desktop so everything up until the creation of this website will have a listed date in the title.
Magic bug Fixes!
Curated the creatures we will use for the Pre Alpha Release.
Added the Summon Hellhound spell to the data table.
Added the Summon Ghost spell to the data table.
Updated the Interface event update weight with a new variable for total weight.
Curated the creatures we will use for the Pre Alpha Release.
Added the Summon Hellhound spell to the data table.
Added the Summon Ghost spell to the data table.
Updated the Interface event update weight with a new variable for total weight.
Added a new interface event for GetCurrentInventoryWeight_OnInterface
Implemented the GetCurrentInventoryWeight_OnInterface on the player character and the BP AI Parent
Implemented the Event Update Weight_OnInterface event on the BP AI Parent and the Player Character
Fixed the implementation of the Feather magic effect it wasnt working properly and relied on hard references.
Fixed the implementation of the Burden magic effect it wasnt working properly and relied on hard references.
Cleaned up the code in the summon creature code.
Fixed a bug in the Hellhound anim graph that caused them to stop animating
Fixed a bug where Summoned creatures would sometimes treat their summoner as an enemy if they killed all other valid targets.
Fixed a bug where dead AI Characters were still evaluating targets.
Fixed a bug where AI controllers were not being destroyed for dead characters.
Fixed a bug in how summons were destroyed, they were basically waiting double the time they should have to despawn.
Fixed a bug where Summoned creatures sometimes wouldn’t play their being destroyed VFX.
Fixed a bug where summoned weapons wouldn’t play their being destroyed VFX.
Fixed a bug in the VFX placement of Summoned creatures.
Fixed a bug where Ground spells couldnt be cast from the hand unless its was moving as fast as a projectile
Fixed a bug where channel spells would use the wrong path to end their execution.
Removed the old code for casting channel spells from wands, wands now cast projectile spells only.
Fixed some bugs related to the old execution for channel spells related to how we applied damage due to the removal of wands from their execution.
Fixed a bug where player hand cast ground spells would never destroy the hand VFX.
Fixed a bug where player cast hand spells would not activate their VFX.
Updated the Placement radii for all of the rune spells the system changed since they were originally set.
Fixed a bug where player cast rune spells would not activate their placement VFX
Added a validated get for the magic component to the rune casting begin charge, it was causing an error when casting from the player.
Fixed misnamed shock rune and frost fall spell
Implemented spell charge sounds for the rest of the spell types previously they only worked for projectiles.
Added a validated get for the magic component to the self spell casting trigger magic spell event, it was causing an error when casting from the player.
Implemented a bunch of sound effects for the spells for the pre alpha.
Turns out our armor calculations were incorrect in two ways, for one we were using the attackers armor value when calculation a damage reduction instead of the person wearing the armor, and for two the actual damage blocking value was off by 30 percent due to some changes to how protection value is calculated vs the original spreadsheet design.
Fixed a bug where if an NPC killed another npc they would return to their starting place and then pull their weapon back out.
Fixed a misconfigured grip script causing weapons to pass through each other significantly
Turns out our armor calculations were incorrect in two ways, for one we were using the attackers armor value when calculation a damage reduction instead of the person wearing the armor, and for two the actual damage blocking value was off by 30 percent due to some changes to how protection value is calculated vs the original spreadsheet design.
Fixed a bug where if an NPC killed another npc they would return to their starting place and then pull their weapon back out.
Fixed a misconfigured grip script causing weapons to pass through each other significantly
Realized we were missing haptic effects for a bunch of things so created and implemented haptic effects for Spell charging, Weapon hit fails, Weapon hits, Weapon parries, shield blocks.
Modified the intensity of the holster haptic effect
Implemented the haptic effect for nocking the arrow, drawing the bow string , and firing and arrow.
Added a spell destroy delay of 30 seconds to make sure a spell thrown into the air wont go on forever.
Adjusted the angle of the projectile spell throwing, seems much better now.
Significantly reduced the references in the inventory component
Fought a bunch of the NPCs in the endless arena to test the time to kill and ended up reducing the possible max health pool because enemies were way too spongy.
Work on the creatures and bug fixes continue!
Fixed a bug where non humanoid creatures would lay down on the ground when stunned due to an animation skeleton mismatch
Fixed a bug where humanoid creatures wouldnt get stunned during combat
Fixed a bug where the player would be counted as a valid overlapped actor for the get closest actor check we use in the wrist UI
Fixed a bug where non humanoid creatures would lay down on the ground when stunned due to an animation skeleton mismatch
Fixed a bug where humanoid creatures wouldnt get stunned during combat
Fixed a bug where the player would be counted as a valid overlapped actor for the get closest actor check we use in the wrist UI
Fixed a bug in the Wrist UI where the Item name box was set to invisible permanently
Fixed a bug where the previously displayed item info would never be cleared when switching to the Quest info UI
Changed the Quest info Ui to show “No Active Quest” if one is not active, looks better than just the empty panel.
Rewrote the entire system for showing and hiding the wrist UI it no longer shows up when swinging weapons, and has a contextual location for the information pop up when hovering over an item or when showing quest information its right above the anatomical snuffbox on either hand, when holding an item it shows up on the inside of your wrist.
Implemented a temporary UI update particle effect for things like when the player needs to level up or gets a quest update.
implemented the player Death Knell sound effect.
created a new interface event called PlayerNotificationVFXActivate_OnInterface so we can actually activate the new particle effect without a hard reference.
Bound the narrative events for Quest Succeeded and Quest New state to new events in the player character so we can show the New particle effect.
Fixed that super frustrating bug where the NPC inventory shelf was spawning at random angles.
Dozens of tiny fixes to creatures
Cleaned up the code inside of the SpawnAttackAttachment function
Added a variable called Creature_Humanoid to help us use the same paths as the metahuman based characters without the facial setup
Updated the flow of the Setup Weapon range event. Previously we only allowed weapon range overrides on creature weapons in retrospect this was dumb.
Cleaned up the code inside of the SpawnAttackAttachment function
Added a variable called Creature_Humanoid to help us use the same paths as the metahuman based characters without the facial setup
Updated the flow of the Setup Weapon range event. Previously we only allowed weapon range overrides on creature weapons in retrospect this was dumb.
Had to do some weird stuff with the goblin 001, due to their animations we actually need to have them use the normal creature path and then spawn a copy of their weapon when they die. Dont love it as a solution, but it works.
Exposed the chance to play a death animation vs rag dolling as a variable.
Fixed missing parry event inside of the Base object it was never being fired due to a missing tag
Re wrote the code for switching from melee to another combat type, previous code worked fine if we had a fully kitted out NPC, but if they didnt have magic or a ranged weapon they would pull put away their weapon and then pull it right back out looked like a bug,
The rest of the creatures are now working to some degree.
Creatures!
Started work today on getting the creature combat fully functional, last time i messed around with it was almost 2 years ago and it .. kind of worked, but needs significant rearchitected.
Cleaned up the code paths for NPC setup to better handle whether we are setting up Human NPCs or creatures including skipping a bunch of strictly human stuff like determining weapons and armor.
Added variable for Creature uses armor and creature uses non attachment weapon just in case we need that at some point as of right now everything for spawning Creature weapons is part of a separate event.
Started work today on getting the creature combat fully functional, last time i messed around with it was almost 2 years ago and it .. kind of worked, but needs significant rearchitected.
Cleaned up the code paths for NPC setup to better handle whether we are setting up Human NPCs or creatures including skipping a bunch of strictly human stuff like determining weapons and armor.
Added variable for Creature uses armor and creature uses non attachment weapon just in case we need that at some point as of right now everything for spawning Creature weapons is part of a separate event.
Added an interface event for GetIsCreature_OnInterface and added it to the BP Ai Controller to control which behavior tree we load.
Replaced the old MoveTo event in the Creature behavior tree with the BTGS one
Removed all the refs to attack groups in the setting animal behavior service because we dont use those anymore.
Fixed a bug where we were removing the weapon overlap capsule from attack attachments.
Fixed incorrectly set visibility of the mesh on all the creatures
Fixed a missing animation blueprint on the brown bear creature
Fixed the blendspace for the flying vampire
Fixed the animation blueprint for the flying vampire
Replaced the animations inside the forest guardian attack attachment
Added a tag for the Greater rock golems called Giant so we can do stuff with that like scale the max speed to make them look like big heavy things struggling to move.
Scaled the Greater golems to 1.5 times their normal size to differentiate them more from the lesser golems
Fixed a bug where we werent actually attaching the creature attack attachments to the correct socket
Fixed a bug where we werent actually setting the main hand weapon info inside of the creature attachment code causing us to never use the weapon distance over ride.
Put in a workaround for small spiders in the distance calculations because they dont usually meet the rotation threshold required to be valid due to their size.
Changed the radius of the sphere trace when tracing for damage with attack attachments to make hit detection more reliable.
Fixed a bug where the spider queen was using the wrong attachment item
Fixed missing animations on the twig people
Fixed missing attachemnt on twig person 003
Fixed an execution flow issue in setting a reference to the possessedAI inside the animal behavior tree
Added the stunned damage multiplier to the calculate damage function.
Cleaned up the code inside of the Calculate damage function it was a bit of a mess
Fixed a bug in the stun calculation
Fixed a naming bug in the GetIsStunned_OnInterface function, it was returning MidDraw instead of IsStunned, must have forgotten to change it.
Added the stunned damage multiplier to the calculate damage function.
Cleaned up the code inside of the Calculate damage function it was a bit of a mess
Fixed a bug in the stun calculation
Added a call in editor debug event to our NPC to reset all the skills to 5, why the fuck haven’t i done this sooner. No more tracing down which skills are set in debugging mode.
Fixed a bug in the magic system where we were never resetting the spell loading value if the NPC ran out of magic.
Found a bug where the magic regeneration is happening even if a spell is charged which is a bit broken.
Added an interface event called IsSpellCharged_OnInterface to help us stop the magic regeneration if you or an NPC is actively casting a spell.
Magic no longer regenerates while casting a spell!
The math for calculating spell cost inside the T_DetermineMagicSpell was not using the correct formula.
Fixed a bug where spell cost was being paid twice for NPCs.
If NPCs run out of magic they now have a chance to switch to another weapon if they have one.
Added an interface event for GetHighestCombatSkill_OnInterface this returns what the highest skill is for the Character and whether or not its magic
Fixed a bug where we were still resetting the skills when reevaluating the weapons.
Created a new function in the AI Parent to get the highest combat skill excluding magic. The idea being we need to be able to force the NPC to a different combat method if they are out of magic.
Changed the Reevaluate weapon function to include an input for if we should exclude magic when reevaluating
Fixed a bug in the S_Strafe service causing it to not compile due to the Get is stunned event update.
Fixed a bug in execution flow of new determine highest combat skill functions.
Fixed a bug where the magic regeneration timer was always ticking even when at 100 percent magic.
Fixed a bug where NPCs would spam weapon switching
Fixed a bug where NPCs would sprint around the player while aiming with magic… hilarious to look at but not fun at all.
Added a in interface function to the BTGS Interface called GetMagicPercentage_OnInterface to help us make sure we arent trying to switch to magic combat when we don’t have enough magic to likely be able to cast spells.
Fixed a bug where we would attempt to switch to magic combat while already trying to switch combat causing a loop
Fixed a bug where we would switch to magic when we should have switched to ranged weapons instead.
NPCs can now reliably switch in and out of magic combat based on their amount of magic!
Added interface events for set and get invisibility, we already had events for setting the active state used for things like completing narrative events or updating behavior, but nothing to actually set the actual variable in the stats component… which also didnt exist until now.
NPCs now correctly respond to player using invisibility
Updated how we are clearing targets inside the BP AI Controller
NPCs now correctly respond to players losing invisibility
Fixed the bug where npcs couldnt detect players in bushes.
Fixed the dialogues not being played properly for the endless spawning characters.
Created the new dialogue assets for the rest of the characters.
Generated and imported all the new temp combat barks.
Fixed the dialogues not being played properly for the endless spawning characters.
Created the new dialogue assets for the rest of the characters.
Generated and imported all the new temp combat barks.
Bug fixes continued
Fixed a large bug where ground spells would still activate their damage on dead targets
Fixed a quite frustrating and persistent bug where NPCs couldn’t reach the player turned out to be an issue with some things blocking the nav mesh.
Generated a bunch of temporary audio lines for combat testing of things like oofs and combat barks.
Fixed a large bug where ground spells would still activate their damage on dead targets
Fixed a quite frustrating and persistent bug where NPCs couldn’t reach the player turned out to be an issue with some things blocking the nav mesh.
Generated a bunch of temporary audio lines for combat testing of things like oofs and combat barks.
Fixed some missing audio lines for aviamon.
Created the new dialogue assets for the Nymaa Mid Age Males
Spent a bit debugging why i cant get the new voice lines to play, but havent solved it yet, muts be missing something will have to solve tomorrow.
Optimizations and bug Fixes!
Fixed a bug in the scaling of our crowd actors
Removed the old code and cleaned up the code for reducing magic in the magic component.
Added a loop to destroy all the components in the character when they die instead of having them all plugged into one destroy so we can do an is valid check.
Started the process of optimizing a bunch of the files related to our VFX files a significant point of performance issues for us.
Fixed a bug in the scaling of our crowd actors
Removed the old code and cleaned up the code for reducing magic in the magic component.
Added a loop to destroy all the components in the character when they die instead of having them all plugged into one destroy so we can do an is valid check.
There was a bug where spells that hit anything would give experience and attempt to do damage or effects to it.
Fixed a bug in checking for offhand weapons in the melee component.
Added a validated get for the magic component inside the bp ability parent before reducing magic.
Fixed a bug where spell would never go away if you dropped a charged wand
Fixed a null ref when trying to destroy a slowly cast spell in the player character
Fixed a bug where spawned wand spells would be destroyed if you dropped the wand
Added a lifespan of 30 seconds spells spawned from wands
Fixed a bug where spells hitting weapons wouldnt actually damage the one holding it, this was originally designed this way, but it just isnt fun and looks like a bug to users.
Fixed bug where we would try to stop magic charge on interface on an invalid spell
Added a delay and do once to the crowd sound triggers to make sure we werent just playing a bunch of sounds over each other.
Fixed a bug in the endless NPC spawner where hair would spawn with helmets
Added a function to the BP AI Parent to check if an npc has a backup weapon, this returns a boolean for melee or ranged, purpose is to have a check inside the behavior tree so we can try to switch weapons to melee if player is too close or marksman if they are too far away.
Added an interface event to the BTGS AI Interface called Does NPC Have Backup Weapons this returns a cached value from the previously implemented function to check the same. This cached value is updated every time the character is spawned or reevaluates their weapons
Added a function to the BTGS AI Interface to return whether or not we are currently revaluating the npcs weapon
The NPCs now have a chance to switch to Melee weapons if they have one and you get close to them while they are in ranged combat mode.
Added a cooldown for how often hit reactions can play it was possible for the player to basically permanently stun lock the NPC making things way too easy.
Removed the ref to the old HUD from all the creatures
Removed the old Attack Group checking code from the AI controller, we no longer use attack groups
Removed the old attack group setting code from the AI controller.
Fixed a missing weapon socket on the base skeleton
Fixed a bug inadvertently created earlier when i fixed the null off hand weapon issue in the melee component. Becuase of the new execution flow we were never unsetting the IsAttemptingShieldBash Boolean leading to npcs playing the wrong attack animations and not actually doing any damage.
Added an interface event for DoesPlayHaveSpawnedSpell? I’m sure this’ll come in handy in a bunch of places later, but right now i need it to let the NPC know if a player is using magic as of right now they only understand if the player is holding a melee or ranged weapon.
Added an interface event for GetPlayerSpawnedSpells Returns the left or right spawned spell.
Added the check for magic in the EnemyIsRangedOrMagic function inside the setting ai behavior service.
Adjusted the distance that is considered valid for an npc to be from the player before attacking with a melee weapon they were far too close before. Current calculation is 80 percent of weapon length plus the length of a metahuman arm which is around 90cm I believe.
Fixed a null reference in the top and bottom blocking code for spawning particle effects that would happen if the NPCs shield broke during combat.
Shortened the distance an npc could be from the player when using hand to hand weapons
Fixed a bug in the melee component where we tried to get the world location of a component that didnt exist.
NPCs now have a chance to switch to a ranged weapon if they have one and you get too far from them while they are in melee combat mode.
NPCs now have a chance to switch to a melee weapon if they have one and you get too close to them while they are in magic combat mode.
The combat polishing begins!
Created the Endless spawner level and populated some racks with weapons
Added a new event call ResortSpells to the spell inventory component so we can have access to spells added after event begin play We could call learn spell, but this is if we wanted to add multiple at one time easily and refresh all the arrays of spell types.
Fixed a bug where we were never updating the faction of the NPC at runtime causing combat to not start sometimes
Added a new particle effect for when staves are being charged.
Fixed a bug in choosing staves.
Added new socket on skeleton for holding staves
Reworked how we get the socket to attach weapons to, its much cleaner now!
Fixed a bug in the animation graph where weapon stance wouldnt get updated.
Added Staff and Wand as options in the E_WeaponType enum.
Created new wand and staff state machine in the anim bp for these new enum values, they are placeholder for now but work better than what was there.
Shields were never taking durability damage when blocking, thats been fixed.
Fixed bug where NPC to NPC combat wouldn’t activate due to the recent changes to how player combat activates
Fixed a bug where if an NPCs staff casting anim was interrupted like from being hit the charge effect would never go away.
Created a new animation notify for death ragdolling
Fixed a bug in the release magic charge function that would stop a death ragdoll from playing
Ragdolling kind of works now.
Fixed an engine crash when we would ragdoll if still moving using the character movement component
Replaced our physics asset override in our character this one seems to work a lot better less creepy neck stuff
Added a new boolean AvailableForDialogue to the btgs stats component for a better way of checking if we should allow an NPC to start dialogue instead of a bunch of other more complex checks we had.
Fixed the dialogue not starting when using the new tutorial player characters
Cleaned up the weapon range code.
Cleaned up the begin play event for NPCs broke things up into events for better readability
Removed all the old dialogue card code from the BP AI Parent seeing as its now part of its own dialogue UI.
Removed the super old code from the original demo that we used to kill the bandits.
Removed the old facial animation code from when we tried to use a plugin for facial animation before our custom system.
Removed the old code for player weapon swing direction checking, now that that lives in the weapon itself.
Cleaned up the readability of all my recent interface events in the BP ai parent, was looking a bit spaghetti
Created the Endless spawner level and populated some racks with weapons
Added a new event call ResortSpells to the spell inventory component so we can have access to spells added after event begin play We could call learn spell, but this is if we wanted to add multiple at one time easily and refresh all the arrays of spell types.
Fixed a bug where we were never updating the faction of the NPC at runtime causing combat to not start sometimes
Disconnected the mesh merging for now because it breaks armor reevaluation, I think i know how I wanna fix that just gonna be time consuming and isnt the highest focus tonight.
We apparently never actually connected the armor equipping function to the revaluate armor function fixed that.
Created an Endless Arena Spawner manager that can randomize armor, weapons, and spells of NPCs and then spawn them in one at a time although there isnt really a reason that couldn’t be more.
Fixed a bunch of broken textures on the NPCs… again, really wish epic would fix that bug.
The endless game mode version basically works now albeit with a fair amount of bugs mostly due to player actions or the fact that we have some blocking loads for armor pieces that shouldn’t be there.
Tomorrow it just needs to be played a lot to gather bugs and then fix those, also need to work on the optimization a bit there some defined pain points such as new spells spawning in or new animations loading in.
Wands
Fixed a bug where NPCs could equip shields when using staves.
Added Max Charge values to all the staves in the data table, will probably need to balance it later.
Added the missing frost ground spell VFX
Fixed a bug where NPCs could equip shields when using staves.
Added Max Charge values to all the staves in the data table, will probably need to balance it later.
Added the missing frost ground spell VFX
Fixed a bug where non staves and wands would get an event to charge a particle effect
Wands are now working fully!
Spent a couple hours curating new animations for the staves and wands what we have isnt great.
Added an interface event for SetStaffCooldownStatus_OnInterface to the BTGS_Interface
Added a variable for StaffCooldownActive to the combat status component. Not sure I love having it there we will be passing data between the character, the staff, the combat status component and the melee component because thats weirdly enough were staves fire from not sure why we programmed it that way frankly, system is complex… seems like a lot of failure points.
Added an interface for GetStaffCoolDownStatus_OnInterface to the BTGS_Interface
Started tracking down why staves are not working properly for NPCs, They would cast the spell but none of the effects would show up even though the player was taking damage.
Added an interface event for SetStaffCooldownStatus_OnInterface to the BTGS_Interface
Added a variable for StaffCooldownActive to the combat status component. Not sure I love having it there we will be passing data between the character, the staff, the combat status component and the melee component because thats weirdly enough were staves fire from not sure why we programmed it that way frankly, system is complex… seems like a lot of failure points.
Added an interface for GetStaffCoolDownStatus_OnInterface to the BTGS_Interface
Added a check in the melee component attack conditions to check to see if the staff attack is on cooldown
Added an additional check to the setting AI behavior service to make the AI strafe if the staff attack is on cooldown.
Added an interface event to the I_Weapon interface for StartStaffCooldown this is to help us deal with a race condition due to async loading
Fixed a bug where Randomly selected weapons werent getting a valid charge.
Moved the calculation for whether or not a staff spell could be charged we were previously removing charge from the staff at the end of the execution line.
Fixed a bug where the staff charge would continue dropping below 0
Added a variable to the base object to keep track of whether or not a weapon is out of charge.
Added an interface event GetIsWeaponOutOfCharge
Updated the previously existing Weapon out charge interface to be called Set Weapon Out Of Charge for better clarity
Fixed a bug where NPCs could pick a staff or wand that hand no charge as their active weapon
Created a new interface event GetItemCurrentCharge_OnInterface
Added a new tagged dialogue type for when weapons break so the NPCs can bark something if their weapon breaks.
Added a new tagged dialogue type for when weapons run out of charge so NPCs can bark something if their staff runs out of charge.
Added a temp sound in for when weapons break like a snapping metal kind of sound, need to replace with a proper metasound but sound so good already, cant believe I didnt think about that sound effect before now.
Added a temp sound effect for when a staff runs out of charge, need to replace with a proper meta sound.
Fixed a bug where the reevaluate weapon function would get stuck in an infinite loop if the weapon they should sheathe gets destroyed mid sheath.
Fixed a bug where the reevaluate weapon function would fail to sheath the shield if the main hand weapon broke during sheathing.
Now that our weapon switching is working pretty consistently, I’ve plugged the reevaluate weapon function back into weapon broken event. Now if an NPC weapon breaks they will immediately reevaluate their weapon.
Modified the formula for weapon range calculations inside of the Setting AI behavior service. It was calculating differently than the values used inside the actual character causing distance based bugs.
Fixed a bug where NPCs would never put away their shield if their weapon broke.
Now that our weapon switching is working pretty consistently, I’ve plugged the reevaluate weapon function back into weapon broken event. Now if an NPC weapon breaks they will immediately reevaluate their weapon.
Modified the formula for weapon range calculations inside of the Setting AI behavior service. It was calculating differently than the values used inside the actual character causing distance based bugs.
Fixed a bug where NPCs would never put away their shield if their weapon broke.
Fixed a bug where NPCs would destroy the ref to their fist weapon when switching from magic.
Fixing the hand to hand combat.
Ran the combat overnight to check for bugs, none were noticed until spell number 3748 was cast, when the fireball got stuck to the npc hand again, gonna put some check in later down the combat execution path to make sure that if there is a spell and we arent in magic combat mode it gets destroyed.
Fixed a bug where npcs could select broken weapons from their inventory to fight with, causing them to never switch to hand to hand combat.
Apparently our hand to hand combat has been broken for over a year and I never noticed because none of our npcs for the Arena tutorial or alpha are were designed to fight with fists, they can properly switch to fists now.
Ran the combat overnight to check for bugs, none were noticed until spell number 3748 was cast, when the fireball got stuck to the npc hand again, gonna put some check in later down the combat execution path to make sure that if there is a spell and we arent in magic combat mode it gets destroyed.
Fixed a bug where npcs could select broken weapons from their inventory to fight with, causing them to never switch to hand to hand combat.
Apparently our hand to hand combat has been broken for over a year and I never noticed because none of our npcs for the Arena tutorial or alpha are were designed to fight with fists, they can properly switch to fists now.
The animations for fist combat werent properly named or assigned to the data table for the left or right fist, they both had all the hand to hand combat anims. Causing bugs in hit detection. Fixed it.
The code for actually throwing a Left punchwas never actually programmed in we were only ever checking for if the left hand weapon was a shield for shield bashing, I added in some checks to see if the left hand weapon was a fist if it is we have a 50 percent chance of using the left fist instead of the right one.
Fixed a bug where the fist objects would be destroyed when reevaluating weapons when no others were available.
Fixed a bug when fist references wouldnt be set when switching from Magic to hand to hand.
Fixed a execution flow issue in evaluating the chance to throw a left punch in the melee component.
Finally fixed the issue of NPC attacking when they were no where near the player in two ways, first the code for actually defining the range based in weapon length sometimes had invalid refs to the weapon, and second I added a check to see how far away the NPC is from the player and if they arent within that distance they return negative on their can attack check. We were previously only using that range to tell the npc where to run during combat, but there was nothing stoping them from still attacking if they got to an invalid location until now. This does sometimes result in the NPC just standing there if they cant get to the player, but thats better than them attacking aimlessly, in practice it just looks like the npc is waiting in the player to make their next move which is a cool side effect.
Fixed a bug where the magic casting animations went on way to long even after a spell was done firing.
Added a new socket for the hand to hand weapons because none of the existing sockets worked well, modified the logic of the weapon attach to hand function to use this new socket.
Hand to hand weapons working just like the rest!
NPC can now taunt the player if they cant reach them including playing a sound and an animation! Basically if the NPC cant reach they player they will say something like come on strike me coward!! Fucking awesome addition that only took a few minutes.
BUGS BUGS BUGS
Took all day, but i finally solved the…hopefully actually this time. Where npcs would sometimes have spells or arrows stuck to their hands after switching to a different combat style. Really difficult bug to track down due to it being so inconsistent.
Adjusted the magic regeneration rate for npcs it was way too high.
Fixed the bug where npcs would spawn more weapons on top of existing weapons.
NPC combat can now switch between magic, two handed weapons, archery, and multiple types of one handed weapons.
Took all day, but i finally solved the…hopefully actually this time. Where npcs would sometimes have spells or arrows stuck to their hands after switching to a different combat style. Really difficult bug to track down due to it being so inconsistent.
Adjusted the magic regeneration rate for npcs it was way too high.
Fixed the bug where npcs would spawn more weapons on top of existing weapons.
NPC combat can now switch between magic, two handed weapons, archery, and multiple types of one handed weapons.
Turns out the stuff I did yesterday works great unless the NPC has a shield, so its a bit of back to the drawing board for that system.
Previously we were sequentially calling the draw events for the main and off hand weapon with just minor variable changes this was kind of dumb in retrospect, I’ve created a new event inside the Combat status component to allow us to just pass the proper weapon variables.
I’ve created a new interface event inside the BTGS Interface called SetWeaponDrawnStatus_OnInterface, it makes more sense and should simplify the code and solve some bugs to store the Actual drawn state of the weapon inside of it instead of inside the combat status component.
Turns out the stuff I did yesterday works great unless the NPC has a shield, so its a bit of back to the drawing board for that system.
Previously we were sequentially calling the draw events for the main and off hand weapon with just minor variable changes this was kind of dumb in retrospect, I’ve created a new event inside the Combat status component to allow us to just pass the proper weapon variables.
I’ve created a new interface event inside the BTGS Interface called SetWeaponDrawnStatus_OnInterface, it makes more sense and should simplify the code and solve some bugs to store the Actual drawn state of the weapon inside of it instead of inside the combat status component.
We already had an interface event for GetWeaponDrawnStatus_OnInterface, but were never using it so taht’s been fixed as well.
Pretty large rewrite of the combat systems conditions stretching from AI tasks to animation blueprint changes to base object changes. The System now works with shields and main hand weapons again and is much more consistent. Still some issues with switching into weapons that are already used on a slot for instance if an axe is holstered on the NPCs hip and they try to spawn a short sword it will spawn on top of the axe, should be bale to fix that soon though.
Weapon Switching Fully working!!
Added some debug commands for camera rotation
Fixed the material on the Quiver, it was somehow still set to a default lit material.
Took all fucking day, but we finally have consistent switching between the 3 possible combat styles. Melee, Marksman, and Magic!
Fixed a small bug with the placement of the VR player hands.
Added some debug commands for camera rotation
Fixed the material on the Quiver, it was somehow still set to a default lit material.
Took all fucking day, but we finally have consistent switching between the 3 possible combat styles. Melee, Marksman, and Magic!
The character overhaul continues.
Added a new function to the BTGS_Interface called GetSkillOfItem because a check we do frequently is to get the item info break the struct and then compare its skill to a given skill for flow control, this simplifies that code.
Removed references to the Cell state manager from the BP AI Parent, it was used by the old saving and loading system, dont need it for the new one.
Removed a bunch of old weapon attachment code from the combat status component
Added a new function to the BTGS_Interface called GetSkillOfItem because a check we do frequently is to get the item info break the struct and then compare its skill to a given skill for flow control, this simplifies that code.
Removed references to the Cell state manager from the BP AI Parent, it was used by the old saving and loading system, dont need it for the new one.
Removed a bunch of old weapon attachment code from the combat status component
Fixed a pretty large bug in the weapon switching where NPCs would continue to use their previous weapons animations.
Added some booleans for hip holster occupied and back holster occupied to help us with NPC weapon switching during combat the idea being that if they need to reevaluate their weapon they wont spawn one in an already occupied holster.
Fixed an animation bug where NPCs would briefly play animations for the attack of their previously equipped weapon, separate from the above bug.
Weapon switching between ranged and melee is working pretty consistently.
Fixed the bug where NPCs couldnt switch to magic casting from melee weapons.
Many small bug fixes mostly not listed here.
The character overhaul begins!!!
Removed the references to the debug faction component
Removed the references to the old HUD
Removed Level Streaming Check function, we don’t use world partition anymore so we dont need it anymore.
Pretty much every line here will be in reference to the BP AI Parent unless otherwise stated
Removed the references to the debug faction component
Removed the references to the old HUD
Removed Level Streaming Check function, we don’t use world partition anymore so we dont need it anymore.
Collapsed a section of the graph dealing with facial animations to a new function called SetupNPCHeadAnim for the sake of readability
Removed the references to the Physical Animation Component, we disabled it a bit ago because of performance concerns.
Removed the Set Physical Animation Graph.
Added an event called UpdateQuiverMesh to allow us to change the quiver mesh, right now only one quiver mesh is ever used, theoretically if an NPC changed arrows during combat we would need this.
Added a Has Ammo Boolean variable to the BTGS_InventoryComponent we already have a function for this, but it requires us to search through the entire inventory which is costly so this is more of a cached value.
Added an item validation check and IsMarksman check into the choose best weapon function for better event graph readability.
Moved the Choose Best Arrow function to after choose best weapon no reason to run a loop to check for arrows if we arent even choosing a bow.
Added an item validation check to the ChooseBestShield function.
Finally Removed the entire patrol system, it wasnt really doing much as there was never a reference to a patrol blueprint. We dont do patrolling AI, Synapse AI will take over all those functions anyway.
Fixed a bug in combat execution that a previous optimization broke. Basically we were calling the interface event for begin attack on the wrong component.
Removed the player valid check timer it wasn’t doing much anymore and we have much better player proximity optimization now anyway.
Removed refs and setup function for the original stats widget
Moved the Weapon range calculations into a new event for better readability and an eventual plan to move it to a different component.
Removed Ref to the Physical animation component inside of the Resource component
Removed Ref to the Physical animation component inside of the Taking Damage component
Added an interface event called GetIsStunned_OnInterface to the BTGS Interface so we can pass that value around instead of relying on a hard ref to the melee component.
Added an interface event called GetIsMidDraw_OnInterface to the BTGS Interface so we can pass that value around instead of relying on a hard ref to the combat status component.
Got the the old temp non combat AI Integrated into the main behavior tree
Added an interface event called ToggleHealthWidget_OnInterface to the BTGS Interface so we turn the health UI on and off via a Service on the behavior tree.
Completely removed the old AI activation system, we now handle whether or not the NPC is in combat between the behavior tree and the AI controller.
Many many other changes inside the BP Ai Parent… the code is so much cleaner and more efficient.
Further testing of the individual combat systems in preparation for the Character overhaul
Found some missing VFX in the magic effects data table gonna pass that over to Jackie on Monday.
Replaced some references to the movement status component inside of the T_SetMovementSpeed with the interface event UpdateMovementSpeed.
Cleaned up the code inside of T_SetEnemyAsFocus
Found some missing VFX in the magic effects data table gonna pass that over to Jackie on Monday.
Replaced some references to the movement status component inside of the T_SetMovementSpeed with the interface event UpdateMovementSpeed.
Cleaned up the code inside of T_SetEnemyAsFocus
Removed references to the input buffer component and movement status component inside of the Ranged Component
Fixed a bug in the archery combat where the NPC Arrow would never be destroyed if they sheathed their weapon
Replaced the old GetStatsComponent function with the new one inside of the T_CheckNeedToHeal, this was sometimes causing a crash in both the engine and game.
Found a pretty large bug, that I’m not quite sure how to fix yet. If an NPC loses sight of the player and returns to their location they can never reactivate their AI even if looking right at the player.
Removed some old animation references from T_SendOffAttack.
Created a new Interface event called EventAttackOnInterface to allow us to call for an attack without an explicit reference to the melee component.
Reduced size of T_SendOffAttack from 35 mb and 1200 references down to 2.1mb and 165 references, by removing references to the melee component.
Cleaned up the code in the task T_DrawArrow.
Removed a ref to the Magic component from the S_MageStrafe service.