BTW, if you find yourself needing engine stuff that doesn't exist, or access to information that isn't exposed to scripts, let me know. I'm rather more motivated to implement things that facilitate mods like this. For scraping off the goo, maybe I could split up the damage dealing code so that you can just get an amount instead of actually dealing damage to the critter. Then you could call that in a custom action. Since other people are supposed to be able to help, I've had two ideas about that. Put a small AoE on the affected creature. Other creatures in the AoE get a condition that allows them to take a custom action to help the tangled creature. This one can be implemented right now. Make it so that radial menu entries can be determined in part by a target you click on. So right clicking on the tangled creature would enable a custom action. I haven't looked too hard into how to implement this. #2 might be better in the long run. Not certain.
Hi @dolio! Thanks for joining the discussion, and thank you for all the amazing work you've done on Temple+ I'm a big fan. I really appreciate your suggestion and I'll definitely try to implement it once I've fixed the issues I’m currently running into. At the moment, the main blocker is that I can't get the radial menu action to work correctly for PCs. If I trigger the same action on an NPC via tactics (thus bypassing the radial menu entirely), everything works as expected. So it looks like the action logic itself is sound, but something is going wrong specifically in the radial menu → action dispatch path. I've attached the scripts to this post. Please keep in mind that I’m not a programmer - I'm learning as I go, so any feedback or corrections are very welcome. I'm also considering to not use the custom action and convert the Tanglefoot Bag into a grenade-type weapon finding a way to suppress the "0d0 damage" entry in the combat log. Since the Tanglefoot Bag uses a ranged touch attack, in theory it could behave very similarly to an alchemist's fire grenade, just without dealing direct damage. On a related note, here's a video with a test oblin ambush featuring: goblins alchemist’s fire and burning condition + Extinguish Flames action New experimental conditions: Goblin Morale and Goblin Fear (more on those later) custom tactics defined by goblin role goblins voice lines more goblins
Okay. Those red floats are caused by an absence of a script in the `rules/d20_actions` directory. You need to add one with the magic number you used for the id of the tanglefoot bag action. You can crib from the ones in `tpgamefiles`. I think the reason it only happens for players is that the stuff that's used in there is for interactive targeting and stuff. AI controlled creatures just skip that part. I can probably make it so that the damage message just doesn't show up if the damage is all 0s. It does seem like just making it a grenade weapon would be simpler.
I do have the action script in place — action 3024 is present in the correct folder (/rules/d20_actions). I’m following the Python Actions documentation here: https://github.com/GrognardsFromHell/TemplePlus/wiki/Python-Actions Yes it seems so. I experimented with different combinations of ActionDefinitionFlags and TargetingClassification, and I was able to get it working by switching the targeting classification to: D20TC_CastSpell and by providing valid D20SpellData in the OnBuildRadialMenuEntry hook. With this approach, the action now starts correctly when triggered from the radial menu, and interactive targeting works as expected. The remaining issue is animation-related: the attack animation that plays is the one tied to the currently wielded weapon. I can override that by not using anim_goal_push_attack, and instead pushing the throw animation goal directly, e.g.: use anim_goal_push(72) (throw animation) However, when I do that I also need to force the actor to face the target first, otherwise there’s a risk the throw animation plays while facing the wrong direction. Adding attachee.turn_towards(evt_obj.d20a.target) before pushing the animation goal fixes the facing problem. EDIT: It also works without providing spelldata with this combination: def GetActionDefinitionFlags(): return toee.D20ADF_TargetSingleExcSelf | toee.D20ADF_Breaks_Concentration | toee.D20ADF_TriggersCombat def GetTargetingClassification(): return toee.D20TC_SingleExcSelf But I have to find a way to sync the throwing animation and the projectile launched by script... EDIT2: But this obviously fucks up the script when played by a goblin NPC, which has a skeleton missing that specific animation. [2026-01-12 14:27:41.939] [core] [info] aas_anim_set: ERROR: could not fallback anim 0x 8 (throw) [2026-01-12 14:27:41.939] [core] [info] : Anim File: 'art\meshes\monsters\goblins\goblin_5\goblin_5.ska', Mesh File: 'art\meshes\monsters\goblins\goblin_5\goblin_5.skm'
I don't know if this would help, but one thing I've been working on is holding items besides weapons in your hands. If you look in the protos, there's a flag like OIF_WEAR_WEAPON. It doesn't do anything right now, but I have a branch where it allows you to hold other item types in your hands, instead of just weapons. I don't recall for certain at the moment, but I think anything that can be worn only has its radial actions available when it's actually worn. E.G. when I put the flag on scrolls, they automatically required holding to use. So, the same would be true for grenades, presumably. That would mean you actually can't get the animation for another weapon, because you need to hold the grenade (you just need to figure out which hand it's in, to call the right attack animation). I was working on this because I actually think a lot of things should (strictly) work that way. E.G. you actually need to hold and read a scroll, or have a wand in hand to point it. same for throwing grenades. It's probably moot if I just fix the situation so that you can just make the tanglefoot bag into a weapon in itself, though.
Okay, I dug into things a little bit. Here's a proposal. When you throw holy water at something other than an undead or evil outsider, the holy water has an 'on damage' hook that resets the damage packet. This, among other things, completely eliminates all damage dice from the damage packet. So, what if I extend python with the ability to do this? Then you can add an 'OnDealingDamage' hook to tanglefoot bags that calls `evt_obj.damage_packet.reset()`. I will look for damage packets with no damage dice at all, and omit the message that says 'Frodo took no damage,' because they must have been cleared this way (any attack with a weapon will have its damage dice added automatically by the global handler, so if they're not there, they must have been cleared). A side benefit is that (un)holy water will also not spam the combat log.