Halloween - Fix for monoculus stun and info about other bosses

ics

http://ics-base.net
aa
Jun 17, 2010
841
543
I was testing the bombhead myself this morning and it felt odd to me too that it didn't kill you at all, even if you didn't go at merasmus. Might aswell be that it's by design and that they consider this better solution as the gift spawns, which were turned to player only instead of everyone to see.

I guess i could ask about it but i've pretty much used my quota. Meaning, i've gotten surprisingly many responses to questions i've asked this year.
 

Izotope

Sourcerer
aa
May 13, 2013
698
764
The bombhead's original design was:
1. Explode on Merasmus and ubercharge the wearer, not killing him.
2. Expiration kills the wearer.

Now they have fixed the first design, but not the second.
 

ics

http://ics-base.net
aa
Jun 17, 2010
841
543
I guess it's becuase the bomb heads appear at random on players, if I remember Ghost Fort correctly, and maybe they didn't want players to die from random stuff that's out of their control.

This is most likely the reason why it is as it is now.
 

ics

http://ics-base.net
aa
Jun 17, 2010
841
543
Well i asked about it. Not sure if i receive a reply. I've exhausted my quota of replies already.
 

Benoist3012

L3: Member
Dec 25, 2015
148
207
Hello everyone, I'm gonna answer your question why ghost effects is broken.
Well it's not broken, it's just map locked.
CWheelOfDoom will actually call g_pGamerules->BeginHaunting(blah blah)
but
CTFGameRules::BeginHaunting(blah blah)
Has a check for eyeaduct and ghost fort. Why eyeaduct? Well simply because when a point is captured on eyeaduct BeginHaunting() is called to spawn the ghost around the point.

int halloweenmap = m_halloweenmap;
if ( halloweenmap != viaduct_event && halloweenmap != lakeside_event )
{
//Since your map doesn't match those checks, you go here, and the function will look for the entity tf_holiday
//If it finds the entity tf_holiday, it will then make some checks on variable, that I couldn't find out what is it, but whatever is the result
//you go out of the function.
}

So basically ask valve to remove the map check in CTFGameRules::BeginHaunting


And about TF_COND_PURGATORY it never existed when Monoculus was released, it was added after scream fortress 2015
 
Last edited:

Benoist3012

L3: Member
Dec 25, 2015
148
207
@Benoist3012 Ghosts will spawn from the wheel if tf_holiday has the "allow haunting" flag set to yes, but it seems you can't control where they spawn. In the map I was testing in, about three ghosts spawned on the RED side and moved over towards BLU before disappearing.
Then that's the variable I couldn't figure out.

I saw it was looking for tf_holiday, but the rest was kinda weird.
Code:
CTFGameRules::BeginHaunting(int iSomething, float flSomething, float flSomething2)
{
  int iHalloweenScenario = m_halloweenScenario;
  if ( iHalloweenScenario != EYEADUCT && iHalloweenScenario != GHOSTFORT )
  {
    CBaseEntity *pEntity = gEntList->FindEntityByClassname(0, "tf_logic_holiday");
    if ( !pEntity )
      return;
    CTFHolidayEntity *pHoliday = (CTFHolidayEntity *)pEntity;
    if (holiday->m_nAllowHaunting <= 0)
      return;
  }
  //Rest of the function here
}
Then this is the full check. It all makes sense now, I couldn't figure out the prop because I had to do -20 to the offset since it's a CBaseEntity and I'm on windows.

I believe it answers your question:
Wow, that's... weird. Dunno why a function of the wheel is enabled through a different entity. Thanks for the info.

Ps:If you want, I can get try to get more informations on how the ghosts are spawned/teleported on the map.
 
Last edited:

ics

http://ics-base.net
aa
Jun 17, 2010
841
543
Hello everyone, I'm gonna answer your question why ghost effects is broken.
Well it's not broken, it's just map locked.
CWheelOfDoom will actually call g_pGamerules->BeginHaunting(blah blah)
but
CTFGameRules::BeginHaunting(blah blah)
Has a check for eyeaduct and ghost fort. Why eyeaduct? Well simply because when a point is captured on eyeaduct BeginHaunting() is called to spawn the ghost around the point.

int halloweenmap = m_halloweenmap;
if ( halloweenmap != viaduct_event && halloweenmap != lakeside_event )
{
//Since your map doesn't match those checks, you go here, and the function will look for the entity tf_holiday
//If it finds the entity tf_holiday, it will then make some checks on variable, that I couldn't find out what is it, but whatever is the result
//you go out of the function.
}

So basically ask valve to remove the map check in CTFGameRules::BeginHaunting


And about TF_COND_PURGATORY it never existed when Monoculus was released, it was added after scream fortress 2015

I already had asked about the issue. I was given these instructions:

To get ghosts working from the wheel, all you need to have is to have tf_logic_holiday in the map and have haunting set to yes

As for merasmus bombs, you need enough open space and control point within the map. It tries to center on it when it spawns bombs around.

EDIT:

Remember to set holiday to halloween too in tf_logic_holiday!

Also, advice to test the wheel of doom better. Type in console when sv_cheats 1: ent_fire wheelnamehere spin - this spins the wheel without you doing anything else.

You are propably correct on the TF_COND_PURGATORY setting. I don't remember it being in the hammer options last year when i did Hellstone.
 

Benoist3012

L3: Member
Dec 25, 2015
148
207
Just bumping this thread, because one of my friend asked me how get the purgatory kill icon, on his map.
So I went through server code again, and under CTFGameRules:: DeathNotice, it looks for condition TF_COND_PURGATORY, and add the purgatory deathflag if IsInCond returns true. I think some of you would be interested in it, but maybe you discovered it by accident while making your Halloween map.