Back to the Vavoom Forum Archives


Forum

[Fixed] [1.30] Strife: Rebels pop up from dead peasants

Mon, 27 Jul 2009 19:05:43

Crimson Wizard

This problem persist In Vavoom build with 4040 revision code. And it happens not only with peasants but (rarely) with acolytes and also Oracle spawned Rebel soldier too <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->.
Mon, 27 Jul 2009 14:40:52

Crimson Wizard

There's a weird effect I never noticed in earlier versions of Vavoom. In town there are some peasants which spawn rebel soldiers on death. These rebels just popup from the dead peasant corpse and stand there, dormant. They can be killed, however, but they never return fire, nor move, nor talk. This can be easily seen by killing two peasants in the Tavern. EDIT: wow, it also happens with some of the real rebel soldiers as well. <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? -->
Thu, 30 Jul 2009 14:52:51

Crimson Wizard

I was right, it's Dropped Item, though not from DropItemList. This is caused by Actors.FlagsAndAppearance::A_NoBlocking():
SpeechNum = GetSpeech();
if (SpeechNum)
{
	<...>
	DropItemType = LineSpecialLevelInfo(Level).GetClassFromID(Speech->DropItem);
	if (DropItemType)
	{
		DropItem(DropItemType, 0, 1.0);
		return;
	}
}
If Speech->DropItem == 0, then GetClassFromID method selects first found class with ConversationID == 0, and usually it is StrifePlayer class. Basically just a player pawn is dropped, not linked to any real player. Speech->DropItem can be checked, and if it is equal to 0, it should be ignored. On the other hand, this could be fixed also by making LineSpecialLevelInfo::GetClassFromID() function return 'none' for ID == 0. I believe it will be even better solution, because GetClassFromID is called from other places as well. It can be done like this:
final class<EntityEx> GetClassFromID(int ID)
{
	class Cls;

	if (!ID)
	{
		return none;
	}
	
	<...>
Thu, 30 Jul 2009 15:26:36

Firebrand

Yes, I also think it's better to fix GetClassFromID method in LineSpecialLevelInfo, good work finding this one! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
Tue, 28 Jul 2009 16:32:12

Firebrand

This problem is really odd, I don't know what's going on there...

Back to the Vavoom Forum Archives