Jump to content


Photo

About fighting animations


  • Please log in to reply
8 replies to this topic

#1 temnix

temnix
  • Member
  • 983 posts

Posted 12 June 2017 - 12:37 PM

Two questions here. One is immediately relevant to my zombies, and the other is, well, theoretical. Just bear with me with that one, because I think I'm going through a black hole there, even compared to the other things.

 

1) Okay, how can I stop my zmombies... zbomies... zombies from stretching, yawning, turning their heads and all those other things undead don't do? I wand them dumb as stones. Remove/block select animations somehow?

 

2) Now... It sucks how characters spend most of a round hitting empty air. These pretend swings and stabs aren't any different from ones that connect, they look just as exact. Only for the ones that hit we get a blood spurt, the damage and the recoil animation, but for the false ones we don't. They don't look like misses, they look like blows that hit and somehow magically do nothing.

 

I know I can disable the false swings and stabs, but then combat becomes downright ridiculous. They just STAND AROUND there for 6 seconds. Ranged weapons are fine, but melee... Nobody is even ducking. I have to remind myself that in AD&D a hit is what goes under the AC instead of glancing off armor or getting absorbed by it.

 

So what if I do this:

 

1) Ask the players to turn off the false hits, so only the real attempts remain and creatures stand idle otherwise;

 

2) Patch the single-target projectile of melee weapons, which is ARROW, to use a custom projectile that casts a spell back on the wielder. Should be possible. The secondary spell would not have any to-hit rolls. It would always hit the wielder. In projectile properties there are two fields: Default Spell and Success Spell. There is also the "Default spell on missed" checkbox, but I can't get the projectile to reflect on me even with that checked. What am I doing wrong?

 

3) Anyway, I'm sure this can be sorted out. So the spell getting back at the caster/wielder would apply opcode 138, Set Animation Sequence, switching the character to SEQ_ATTACK, duration 1 or 2 seconds, or maybe Instant. It would also play a little chunks or sparks animation on the nearest enemy and a knock-bang sound.

 

This way fighters would make "real" attacks that would actually appear blocked or deflected.

 

If there are problems with the choice of sound to play - against leather, against chainmail etc. - and the target for the chunks/sparks animation, then the whole thing might be doable instead through scripts. A hit or if possible an attempted hit would summon an invisible minion. That one would force its summoner to SwingOnce(), then force it to cast a spell (with the no-caster-animation option) to play the chunks/sparks visual over LastAttackerOf(LastSummonerOf(Myself)) and play the right sound for the armor worn/creature type etc., all bundled in the same spell file. Of course, a player would be able to interrupt this sequence by clicking away, and then the swinging or the casting would not happen, but that's just like clicking away your character presently when he's in the middle of a swing. You call him off and he has to prepare and wait for the speed factor again when attacking next.

 

At the very least, without disabling these cosmetic attacks, all attacks that actually get made can be equipped with a Default spell to explain the lack of damage done. Then players could learn to interpret "Miss" in the bottom window as "missed flesh and hit armor."

 

So that's the outline. What do you think?


Edited by temnix, 12 June 2017 - 01:25 PM.


#2 Fiann of the Silver Hand

Fiann of the Silver Hand
  • Member
  • 286 posts

Posted 12 June 2017 - 01:33 PM

Real attacks seems like just reinforcing that BG is a hybrid RTwP game, adding a drop of "realism" into a bucket of abstract representation.



#3 temnix

temnix
  • Member
  • 983 posts

Posted 13 June 2017 - 07:09 AM

So are you with me or against me?

 

:lol2:

 

The dream here would be to somehow create additional real attacks that connect but do no damage. But that's just not possible.

 

Why can't I get ARROW to accept a Default spell with the check on? Nothing gets cast when I swing and miss.



#4 GeN1e

GeN1e

    A very GAR character

  • Modder
  • 1604 posts

Posted 13 June 2017 - 02:40 PM

1) Okay, how can I stop my zmombies... zbomies... zombies from stretching, yawning, turning their heads and all those other things undead don't do? I wand them dumb as stones. Remove/block select animations somehow?

Theoretically, you can clone zombie animation into another slot with different .ini settings. That said I'm quite unfamiliar with animation part of the engine myself, and I don't think there's any comprehensive info available anywhere.

 

Alternatively, you can stun them with pause opcode (165) that allows the creature to keep running its scripts, but obviously it'll only work if you need zombies as part of scenery.


Edited by GeN1e, 13 June 2017 - 02:42 PM.

Retired from modding.


#5 temnix

temnix
  • Member
  • 983 posts

Posted 13 June 2017 - 11:49 PM

Your second suggestion may be on to something. I don't remember whether it was pause or stun, but there was an opcode that kept creatures stand realistically and breathing. Well, that's not realistic for zombies, but I mean they wouldn't twitch, stretch, move their heads and what not.

 

I can't supply different animations for zombies, because they are the same creatures, physically, that they were before death. That's the point - it's a real reanimation, not replacement with the zombie avatar. You can raise Davaeorn and have him walk about. They'll have zombie sounds, AI type changes, stat changes and a recoloration of the skin, and they'll be slow, but otherwise same figures. So I'd have to copy every fleshy creature in the game if I wanted to edit out the frames.

 

How about a stun if their action queue is empty? That works even for PCs with the AI off.

 

Now, on the topic of extra attacks and combat abilities... I wrote that there is no way to force a character to make a real attack, but it's possible to imitate them, only there won't be an attack roll and no AC. But with effect 138, character animation change, I can simulate an attack and then time some sparks to fly with that default spell, maybe. What I did, though, is make two weapons that have special attack moves, in the Item menu. They are otherwise a regular axe and bow, but the axe lets you slash at up to 3 targets at once and the bow shoots 3 arrows at different targets, so it's a multiple shot. Instead of an attack they use a damage effect with a save vs. breath weapon to avoid. Check them out! There are shortcomings, like range and which projectile to use, and the bow doesn't consume arrows, but that could be simulated in some way, I'm sure.

 

And fuck, this is a year 1998 engine.

Attached Files


Edited by temnix, 13 June 2017 - 11:51 PM.


#6 Fiann of the Silver Hand

Fiann of the Silver Hand
  • Member
  • 286 posts

Posted 14 June 2017 - 10:56 AM

Maybe this partially undoes what you've got so far, but since you like brainstorming

 

On death, a CRE's script does a few things:

1.  makes dead/orig CRE (C1) invisible/no corpse, but still drops loot including equipped items

2.  spawns a new CRE (C2) that is, in fact, the same CRE file

 2a.  C2 is forced to only used the downed/dead animation

 2b.  C2 can take X amount of damage before its script "kills" it again, this time chunk-style

 2c.  C2 is immune to most spells;  damage, resurrection, and create undead are exception categories

 

etc

 

There'd need to be a way to properly duplicate the dead CRE, then copy its scripts to the new CRE.  Slightly different mechanism for scripts depending on if the CRE is brought back to independent life, or as a controlled undead.

 

etc



#7 temnix

temnix
  • Member
  • 983 posts

Posted 14 June 2017 - 12:37 PM

I don't really see the point. What would this achieve? Avoid the extra animations? That's not so important. If I can't find a way to prevent stretching and head-turning, well... If you know when idle animations play, that could help. The other things I've already got covered. Immunities are in with ring94, the same ring zombies get, spawned in a ring slot, and "nothing" in the other ring slot to get rid of other protections creatures might have had. I updated the ring a bit, it lacked immunity to cold, enchantment and illusion, which zombies should have, and now will. Sounds will be added with a script while still dead. Lots of different sounds, actually. Kobolds and tasloi ought to groan differently from humans and they from giants. Also gotta have something different for women. Chunking I've thought about, but it's probably excessive. Undead don't really need "complete bodily dismemberment," just smashed beyond usability. Maybe I can override the dying agony animation with a Die() action. At least in this case I won't need to worry about other people scripts in that slot, it'll just be my stuff there.

 

Actually there is no groaning and hissing from skeletons and zombies in proper AD&D. They're mindless corpses. They don't eat brains and they are neutral-aligned. Bioware kept this in BG. But, to stay with what people have gotten used to...



#8 Miloch

Miloch

    Barbarian

  • Modder
  • 6579 posts

Posted 09 July 2017 - 03:10 PM

If you know when idle animations play, that could help.

The "standing" animation is the default one, when the creature is doing nothing else. It is the *SD series for IWD* style animations; check here for that and other types.

 

You could theoretically use SetSequence() on the CRE script to avoid it entirely if you don't like it and set it to something else. Not a great solution though. Otherwise, edit the animation to drop the frames (from all facing directions) you don't want, possibly importing from another sequence. It sounds tough, but not really, mostly just tedious. If you're just dropping frames, it's probably only a matter of minutes.

 

As for syncing attacks to actual hits and sounds, that's a big pain in the arse as I recall. I vaguely recall EE having some sort of answer to that; no clue if it ever went anywhere though.


Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"Infinity turns out to be the opposite of what people say it is. It is not 'that which has nothing beyond itself' that is infinite, but 'that which always has something beyond itself'." -Aristotle


#9 temnix

temnix
  • Member
  • 983 posts

Posted 27 July 2017 - 10:50 AM

SetSequence() needs to be given some other animation to play, just like opcode 138. I don't have an installed game in front of me to check, but I experimented a lot with creature animations a little while ago, and I probably would know if it were possible to force a creature to stand straight and do nothing instead of stretching and turning the head. You shouldn't spend attention on the fighting hit-and-miss idea, though. That kind of revamp would be too difficult to implement on the time I can devote to modding, if possible at all. I want to finish my current projects, especially Animate Dead, so I'm only interested in getting zombies not to fidget. I've managed to suppress the "recoil" animation on damage with a contingency that overrides it with the "walk" animation, in practice nothing plays and they just ignore being hit. Good for advancing relentlessly. But they still did the idle thing, so I had to freeze them in place, and that is going to have to suffice if there is no enforcing the