BGforgeNet / Fallout2_Restoration_Project

Fallout 2 Restoration Project, updated
https://forums.bgforge.net/viewforum.php?f=39
542 stars 37 forks source link

Crippled Frank Horrigan vacillates between weapons #206

Closed Anarcho-Bolshevik closed 4 months ago

Anarcho-Bolshevik commented 1 year ago

What happened

  1. Eat the cookie
  2. Enter combat mode
  3. Rush over to Frank Horrigan
  4. As soon as he’s done hitting you, cripple both of his arms (don’t skip this step!)
  5. Stand immediately in front of him

My character is a Slayer, so crippling his arms is easy.

At first this is actually kind of funny (‘Look like I’m gonna need my knife for this situation. Wait, no, maybe I can still fire my gun! Agh, but it feels so heavy now, I’ll just stick to the knife… after I check my gun again. Yeah, too heavy. Okay, maybe I’ll go with the knife… wait, did I hold my gun properly? Let me check that one more time…’), but after a while it becomes tiresome.

It looks like a game‐breaking bug at first because of how long he vacillates, but it isn’t. He just takes a long time and it’s annoying.

What you expected to happen

All of the other NPCs switch to unarmed when both of their arms are crippled. Logically. Frank Horrigan should do the same. On the other hand (heh), I noticed that when the Chosen One is standing away from Frank Horrigan while his arms are crippled, he simply stands there absent‐mindedly.

Screenshot

You can’t really demonstrate this through a screenshot, but whatever.

scr00001

Savegame

Harry Callahan.zip

burner1024 commented 4 months ago
  1. I can't reproduce multi-weapon switching in v28. Maybe fixed by later sfall.
  2. I can reproduce standing idly in some cases. Loading second save and just backing off is enough.

There's nothing interesting in the log, though, and no special targeting in the script. It seems that's just what AI decides to do. @NovaRain you have any idea what's going on here?

NovaRain commented 4 months ago

In the second save (SLOT09), he has both arms, right leg, and eyes crippled. If I remove the gun from his hand (e.g. call unwield_inven() on him), he will start chasing and punching player.

EDIT: it should be possible to add a check in his combat_p_proc to force unwield his gun, like this:

// requires define_extra.h
variable weapon;

weapon := self_right_hand;
if (weapon and (fixed_param == COMBAT_SUBTYPE_TURN)) then begin
   if ((critter_state(self_obj) bwand (DAM_CRIP_ARM_LEFT bwor DAM_CRIP_ARM_RIGHT)) and (get_proto_data(obj_pid(weapon), PROTO_IT_FLAGS) bwand WEAPON_2HAND)) then begin
      inven_unwield(self_obj);
   end
end

Not sure if his knife should also be taken into account (unwield if both arms crippled).

burner1024 commented 4 months ago

OK let's just unequip both. It should probably be fixed in CE anyway.