Official IVAN Continuation thread Sticky

Mar 10, 2014, 7:13 pm
#76
Joined: Dec 4, 2007
Occupation: Perfect Soldier
Location: Astragius Galaxy
Interests: Fiana, Peace, Melons
Posts: 1,054
If I'm not entirely mistaken, the entire reason that this happened to begin with is because the other ommel materials are all liquids, not because they came from an ommel.
Proudly bringing disaster and mental scarring to Attnam since '05!

"You have a rather pleasant chat about finite superarmpits with Sanae the shrine maiden."

You hear distant shuffling.

The Enner Beast tells you to COOL IT!!
Mar 10, 2014, 7:14 pm
#77
Joined: Dec 11, 2008
Posts: 1,770
Warheck wrote
Mustard gas hostility bug (this is a darned tricky one)
Any suggestions?

This one isn't much of a problem outside of LIVAN because mustard gas is nowhere near as powerful in CVS.
I'd be inclined to leave it in, as along with that you're unlikely to find enough mustard gas grenades in a single playthrough to make the mustard gas exploit viable.
System would indicate in graphic if person is mounted on horse or not.
Same system also show if person mounted on boar, elephant, polar bear etc.
Or if person mounted on ass.
Ivan find mounting on ass funny.
Mar 10, 2014, 9:15 pm
#78
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,176
4zb4 wrote
This one isn't much of a problem outside of LIVAN because mustard gas is nowhere near as powerful in CVS.
I'd be inclined to leave it in, as along with that you're unlikely to find enough mustard gas grenades in a single playthrough to make the mustard gas exploit viable.

Hmm, yeah I see the argument. I tried it out in CVS and it is still possible to take out the high priest with one grenade. I think the AI should be given a chance to respond to it as if it were a terrorist attack.

EDIT: Maybe one way to induce hostility could be to include a small explosive effect when the gas grenade explodes. People who are smart enough should move to step out of mustard gas as well.

I also notice that the holy hand grenade doesn't disappear off to the dwarf room when it is donated to the Cathedral. Even when it is armed...
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Mar 10, 2014, 11:34 pm
#79
Joined: Dec 11, 2008
Posts: 1,770
Warheck wrote
People who are smart enough should move to step out of mustard gas as well.

This seems like a good solution. Isn't there a tag you can just put on the mustard gas material to stop creatures above a certain intelligence stepping in it, much like there is one for consuming dangerous items?
System would indicate in graphic if person is mounted on horse or not.
Same system also show if person mounted on boar, elephant, polar bear etc.
Or if person mounted on ass.
Ivan find mounting on ass funny.
Mar 11, 2014, 12:22 am
#80
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,176
4zb4 wrote
This seems like a good solution. Isn't there a tag you can just put on the mustard gas material to stop creatures above a certain intelligence stepping in it, much like there is one for consuming dangerous items?

It's true that the AI will not step into it, but it needs some more code to get the AI to step out of it. All it needs is a check for presence of dangerous gas during StandIdleAI();
Then some sort of command to move away (in biology they call this "chemotaxis").

EDIT: Har har! tested this one out and it works. Lots of fun :3
Holy hand grenade pull pin and drop in cathedral go to dwarf room:
in miscitem.h:
ITEM(holyhandgrenade, item)
{
 public:
  ...
	virtual truth IsKamikazeWeapon(ccharacter*) const { return CalculateHasBe(); }
	...
}
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Mar 11, 2014, 10:32 am
#81
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,206
Awesome work Warheck. Have you pushed any of these to Github yet?
Mar 12, 2014, 3:45 am
#82
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,176
The work has been pushed. (Did it turn out right?). Cap, how will we compile and release forthcoming revisions?

Mustard gas hostility bug
Still facilitates masochism, and fixes the NPC staying in the gas cloud by virtue of the hostility change. Fixed using the following code, and some tweaks to instances of GasExplosion() in miscitem.cpp, level.cpp, gear.cpp and level.h.
void level::GasExplosion(gas* GasMaterial, lsquare* Square, character* Terrorist) 
{
  for(int d = 0; d < 9; ++d)
  {
    lsquare* Neighbour = Square->GetNeighbourLSquare(d);

    if(Neighbour && Neighbour->IsFlyable())
      Neighbour->AddSmoke(static_cast<gas*>(GasMaterial->SpawnMore(1000)));
			
    if(Neighbour)
    {
      character* Victim = Neighbour->GetCharacter();

      if(Victim)
	Terrorist->Hostility(Victim);
    }
  } 
}
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Apr 6, 2014, 3:54 pm
#83
Joined: Feb 20, 2012
Posts: 231
Warheck wrote
Mustard gas hostility bug
Still facilitates masochism, and fixes the NPC staying in the gas cloud by virtue of the hostility change. Fixed using the following code, and some tweaks to instances of GasExplosion() in miscitem.cpp, level.cpp, gear.cpp and level.h.

This introduced a bug that caused the game to crash if the player stepped on a mine while carrying a gas grenade. I managed to fix it by altering

if(Victim)
	Terrorist->Hostility(Victim);

to

if(Victim && !Victim->IsPlayer())
	Terrorist->Hostility(Victim);

It will still crash if an NPC is hit by a mine-activated grenade, but the chances of that happening unintentionally are fairly low, so it shouldn't be too much of an issue. A more permanent solution would be not to set hostility in the case the grenade was activated by a mine (therefore no Terrorist to assign the hostility to), but that may be beyond my capabilities.
Apr 7, 2014, 3:27 pm
#84
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,176
Hey great bug fixing Pent! Did you push it to the repo?
Mines might activate gas grenades quite often, it is always sad to lose a game due to bugs, so we should probably find a solution to this as well. I'll have a go at reproducing this bug and try think of a fix for the grenade activated by a mine.

EDIT: I think there should just be a check in the logic to see whether terrorist is not the null-terrorist (i.e. zero).
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Apr 7, 2014, 4:34 pm
#85
Joined: Feb 20, 2012
Posts: 231
Warheck wrote
EDIT: I think there should just be a check in the logic to see whether terrorist is not the null-terrorist (i.e. zero).

I tried changing it to:

if(Victim && Terrorist)
	Terrorist->Hostility(Victim);

and it seems to work now. I'll do a bit more testing to make sure it works properly. I didn't push the last one to the repo (I don't think I have the power to push changes anyways).
Apr 9, 2014, 12:16 pm
#86
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,176
You should really get push rights Pent. Ask Cap.
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Apr 15, 2014, 10:28 pm
#87
Joined: Feb 20, 2012
Posts: 231
Created a quick fix for the bug that causes Silva to crash the game in GC6. Praying to Silva there will spawn wolves instead of starting an earthquake:

In gods.cpp:
void silva::PrayGoodEffect()
{

    // ...

  if(!game::GetCurrentLevel()->IsOnGround() && !game::GetCurrentLevel()->GetLevelScript()->IsZombieLevel())
  {
    ADD_MESSAGE("Suddenly a horrible earthquake shakes the level.");
    
   // ...
}

In script.h:

class levelscript : public scriptwithbase
{
  // ...
  SCRIPT_TRUTH_WITH_BASE(IsCatacomb);
  SCRIPT_MEMBER_WITH_BASE(festring, EnterImage);
  SCRIPT_MEMBER_WITH_BASE(v2, EnterTextDisplacement);
  SCRIPT_TRUTH_WITH_BASE(IsZombieLevel);
};

In script.cpp:

void levelscript::InitDataMap()
{
  // ...
  INIT_ENTRY(EnterTextDisplacement);
  INIT_ENTRY(IsZombieLevel);
}

In dungeon.dat:

 Level ZOMBIE_LEVEL;
  {
    Rooms = 1;
    IsZombieLevel = true;
    IgnoreDefaultSpecialSquares = true;
    MonsterAmountBase = 20;
    LOSModifier = 24;
    FillSquare = FLINT solidterrain(GROUND), GNEISS earth;
    //...
   }

Tomorrow I'll poke around and see if I can figure out why the earthquake causes the crash on that level (if anyone knows anything about this any info would be greatly appreciated), but failing that this should work nicely.
Apr 15, 2014, 11:36 pm
#88
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,845
It crashes that level because the earthquake works by taking chunks of stone wall and throwing them about. There is no wall that can be used as such in GC6, hence the apocalyptic result.
Uchuudonge wrote
creating stable chaos
making patterns where there should be none
sewing order into the chaos
you spit in the face of random numbers, of chaos
Apr 16, 2014, 9:56 am
#89
mutant ass


Joined: Feb 5, 2014
Occupation: Sysnet Tech Support
Location: Dublin, Ireland
Interests: Computers
Posts: 59
What if instead of an earthquake the game gives the player a pack of wolfs?

if level is equal to [zombie level] give wolfs? instead of earthquake....or simply...you feel she is pleased and nothing happens.
Ivan's Still Alive and Kicking!
Apr 16, 2014, 9:57 am
#90
Joined: Feb 20, 2012
Posts: 231
Alright, it is now properly fixed, and Silva can trigger earthquakes in GC6.

In gods.cpp:

void silva::PrayGoodEffect()
{

    // ...

  if(!game::GetCurrentLevel()->IsOnGround())
  {
    ADD_MESSAGE("Suddenly a horrible earthquake shakes the level.");
    int c, Tunnels = 2 + RAND() % 3;
    if (game::GetCurrentLevel()->GetLevelScript()->IsZombieLevel()) 
		Tunnels = 0;
   // ...
}
Apr 16, 2014, 11:31 pm
#91
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,845
Well, I won't pretend to know how to read code, but good job fixing it!
Uchuudonge wrote
creating stable chaos
making patterns where there should be none
sewing order into the chaos
you spit in the face of random numbers, of chaos
Apr 17, 2014, 3:48 am
#92
mutant ass


Joined: Feb 5, 2014
Occupation: Sysnet Tech Support
Location: Dublin, Ireland
Interests: Computers
Posts: 59
    if (game::GetCurrentLevel()->GetLevelScript()->IsZombieLevel()) 
		Tunnels = 0;

Tunnels = 0;



I think i get it.
instead of moving any rock it just does the event with no effect.

Like throwing a gas grenade at a gas-immunity enemy .
Ivan's Still Alive and Kicking!
Apr 17, 2014, 9:26 am
#93
Joined: Feb 20, 2012
Posts: 231
chaostrom wrote
Well, I won't pretend to know how to read code, but good job fixing it!

" wrote
MadHatter"]
I think i get it.
instead of moving any rock it just does the event with no effect.

Like throwing a gas grenade at a gas-immunity enemy .


Well, I don't fully understand it, and it could likely be solved more elegantly than adding a new script flag for that one stage*, but it seems to have something to do with the game attaching squares to existing tunnels when picking which walls to destroy for the earthquake. Since GC6 is just one large room with no tunnels, it gets stuck looking for squares it can "attach" to, since there aren't any. Setting Tunnels to 0 allows it to skip over that step and it will just destroy some of the walls of GC6 instead.

*EDIT: Yep, it can:
if (game::GetCurrentLevelIndex() == ZOMBIE_LEVEL) 
    Tunnels = 0;
Apr 17, 2014, 11:24 am
#94
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,176
Good bug fixing Pent
The funny thing about GC6 is that in the dungeon script, it is just one big room, with no doors or anything. Just creatures and stairwells.
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Apr 18, 2014, 3:35 am
#95
mutant ass


Joined: Feb 5, 2014
Occupation: Sysnet Tech Support
Location: Dublin, Ireland
Interests: Computers
Posts: 59
I've done some wizard mode on the level....just some messing around.
If you noclip into the walls and just wait.
Mushrooms will just Fill up the entire level![Well for me anyway]


The only real way to survive that round is just to run......and hope to dear god you find the exit..

I didn't think of it at the time.....But could you use a scroll of detect material and enter the staircase material to find the other exit?
Ivan's Still Alive and Kicking!
Apr 18, 2014, 5:11 am
#96
Joined: Dec 11, 2008
Posts: 1,770
MadHatter wrote
I didn't think of it at the time.....But could you use a scroll of detect material and enter the staircase material to find the other exit?

You sure can. It's also useful for finding secret rooms that you have to tunnel/teleport into, and locating the enner beast so you don't run right into him and strike up a fatal conversation.
System would indicate in graphic if person is mounted on horse or not.
Same system also show if person mounted on boar, elephant, polar bear etc.
Or if person mounted on ass.
Ivan find mounting on ass funny.
Apr 18, 2014, 8:11 am
#97
Joined: Feb 20, 2012
Posts: 231
I pulled off a High Priest victory in CLIVAN once (still my only IVAN victory to date; I came close to a Freedom victory in CVS a few months back but Sherry caught me on the way back up). After I'd taken down Elpuri with relative ease, I decided to keep going, but was so scared that I stocked up on detect scrolls (I think I even cloned a few) and just detected the staircases and teleported through each floor. Once I got to the next to last floor I forgot what the portal to Oree's lair was made of and had to teleport into the middle of that large room and frantically search for a way out.
Apr 18, 2014, 9:15 am
#98
mutant ass


Joined: Feb 5, 2014
Occupation: Sysnet Tech Support
Location: Dublin, Ireland
Interests: Computers
Posts: 59
The odd time I'd use a detect material to detect the wood of the levels...

Say fir or balsa
It works fine location even secret rooms, Unless its a huge level in that chase you lose your memory of that level gets scrambled and you get confused for a long time....

One time i screwed up an enchantment and give myself lycanthropy.....I was in the book shop at that time so i just SPRINTED out of the city incase guards attack werewolfs....they probably do and all....screw it i bet his lifes they do...
Ivan's Still Alive and Kicking!
Apr 18, 2014, 10:14 am
#99
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,206
Eire-MadHatter wrote
If you noclip into the walls and just wait.


Oh man, I haven't heard the term "noclip" in a looong time. Takes me back to my Quake II days
Apr 22, 2014, 5:14 am
mutant ass


Joined: Feb 5, 2014
Occupation: Sysnet Tech Support
Location: Dublin, Ireland
Interests: Computers
Posts: 59
capristo wrote
Oh man, I haven't heard the term "noclip" in a looong time. Takes me back to my Quake II days


Thats because i still exist in the worlds of Doom,Morrowind and team fortress 2.

Noclip is still what its known as in those games.


Although i don't noclip in team fortress 2
I have hats i don't want to lose for cheating!
Ivan's Still Alive and Kicking!
Jump to