ivanforum ivanforum
Forum for Iter Vehemens ad Necem
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   fchat fChat   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Carnivorous plant lair GC branch

 
Post new topic   Reply to topic    ivanforum Forum Index -> Programming
View previous topic :: View next topic  
Author Message
SquashMonster
blink dog


Joined: 05 Feb 2005
Posts: 297
Location: The spot right next to the spot where I am.

PostPosted: Wed Apr 27, 2005 2:47 am    Post subject: Carnivorous plant lair GC branch Reply with quote

I was working on a GC branch with a carnivorous plant theme a while back. It seemed to generate some degree of interest in the custom images thread and I didn't want to completely derail the topic, so here's a new one.

There are five things I don't like about the results of my experiment:
1 -- Balence. There is none. I suck at balencing. The main reason I'm posting this is because the levels really need balence.
2 -- Randomness. There's not enough of that either. To my knowledge, there's no way to make IVAN's normal random monster generator work with a specific set of monsters. I didn't really like the option of mixing set themed monsters and normal random monsters, which is the usual method used in IVAN. It would not be difficult to switch to the usual method, if somebody wanted to balence it.
3 -- Starting level. The plant dungeon always branches at the same place. I could make the level of entrance random, but I couldn't find any way to make it so that the stair case back would know where to go.
4 -- Variety. I was going to add acid spitting carnivorous plants and a few killer attack vines, but I wasn't done yet. I'll update if I get time to do them.
5 -- Plant spawning. I don't think I can make the branch boss generate different enemies from Genetrix without changing code, which is outside of my ability for now, mostly because I've not yet learned my way around a compiler. I think the boss should spawn shambling carnivorous plants next to herself, instead of standard plants next to the player.

Anyway, on with the code.

In char.dat

In carnivorousplant
Code:

  Config SHAMBLING;
  {
    AttributeBonus = 250;
    TorsoBitmapPos = 128, 48;
    Adjective = "shambling carnivorous";
    BaseBiteStrength = 1000;
    CWeaponSkillHits == 100;
    TotalVolume = 40000;
    TotalSize = 250;
    IsEnormous = true;
    IsRooted = false;
    StandVerb = "skittering";
  }

  Config LILY;
  {
    AttributeBonus = 250;
    TorsoBitmapPos = 112, 48;
    Adjective = "carnivorous";
    NameSingular = "lily pad";
    BaseBiteStrength = 1000;
    CWeaponSkillHits == 100;
    TotalVolume = 40000;
    TotalSize = 250;
    IsEnormous = true;
    IsRooted = false;
    MoveType = SWIM;
    StandVerb = "sticking"; /*only used if not swimming*/
  }


In genetrixvesana
Code:

  Config GENEFOURX;
  {
    DefaultArmStrength = 32;
    DefaultAgility = 16;
    DefaultEndurance = 20;
    DefaultPerception = 32;
    DefaultIntelligence = 24;
    DefaultWisdom = 16;
    DefaultCharisma = 3;
    DefaultMana = 0;
    BaseBiteStrength = 1600;
    TotalSize = 350;
    Adjective = "grandmother carnivorous";
    DefaultName = "genefourx vesana";
    TorsoSpecialColor = rgb16(220, 0, 0);
    HostileReplies == "@Dd produces a gutteral roaring noise.";
    FriendlyReplies == "@Dd produces a gutteral purring noise.";
  }



In dungeon.dat:

In ELPURI_CAVE
Code:

  Level PLANT_ENTRY_LEVEL;
  {
    Room
    {
      Size = 11,11;
      AllowLockedDoors = true;
      AllowBoobyTrappedDoors = true;
      GenerateFountains = false;
      Shape = ROUND_CORNERS;
      WallSquare = WATER liquidterrain(UNDERGROUND_LAKE), 0;
      FloorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      GenerateDoor = false;
      GenerateLanterns = false;
      AltarPossible = false;

      GTerrainMap
      {
        Pos = 3,3;
        Size = 5,5;
        Types
        {
          # = WATER liquidterrain(UNDERGROUND_LAKE);
        }
      }
      {
        ..#..
        .###.
        ##.##
        .#.#.
        .....
      }

      Square, Pos 5,5;
      {
        OTerrain = stairs(STAIRS_DOWN) { AttachedArea = PLANT_LEVEL; }
        EntryIndex = PLANT_ENTRY;
      }

      Square, Pos 5,0;
      {
        OTerrain = 0;
        AttachRequired = true;
      }
    }
  }

  Level PLANT_LEVEL;
  {
    FillSquare = solidterrain(GROUND), SLATE earth;
    TunnelSquare = solidterrain(GRASS_TERRAIN), 0;
    Size = 48, 48;
    Rooms = 15:20;
    Items = 35:40;
    GenerateMonsters = false;
    IgnoreDefaultSpecialSquares = true;
    CanGenerateBone = true;
    ItemMinPriceBase = 60;
    EnchantmentPlusChanceBase = 30;
    DifficultyBase = 80;

    Square, Random;
    {
      Character = carnivorousplant;
      Times = 10;
    }

    Square, Random;
    {
      Character = carnivorousplant(GREATER);
      Times = 12;
    }

    Square, Random;
    {
      Character = carnivorousplant(GIANT);
      Times = 14;
    }

    Square, Random;
    {
      Character = carnivorousplant(SHAMBLING);
      Times = 16;
    }

    RoomDefault
    {
      Pos = 2:XSize-5,2:YSize-5;
      Size = 4:11,4:11;
      AltarPossible = false;
      WallSquare = solidterrain(GRASS_TERRAIN), 0;
      FloorSquare = WATER liquidterrain(UNDERGROUND_LAKE), 0;
      DoorSquare = solidterrain(GRASS_TERRAIN), 0;
      GenerateDoor = true;
      DivineMaster = 0;
      GenerateTunnel = true;
      GenerateLanterns = false;
      Type = ROOM_NORMAL;
      GenerateFountains = false;
      Shape = ROUND_CORNERS;
      GenerateWindows = false;
      UseFillSquareWalls = false;
      Flags = 0;
     
      Square, Random NOT_WALKABLE;
      {
        Character = carnivorousplant(LILY);
        Times = 1:3;
      }
    }
   
    Room
    {
      Pos = 2:XSize-6, 2:YSize-6;
      Size = 5,5;
      AltarPossible = false;
      WallSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      FloorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(GRASS_TERRAIN), 0;
      GenerateDoor = true;
      DivineMaster = 0;
      GenerateTunnel = true;
      GenerateLanterns = false;
      Type = ROOM_NORMAL;
      GenerateFountains = false;
      Shape = ROUND_CORNERS;
      Square, Pos 2,2;
      {
        OTerrain = stairs(STAIRS_DOWN);
        EntryIndex = STAIRS_DOWN;
      }
    }

    Room
    {
      Pos = 2:XSize-6, 2:YSize-6;
      Size = 5,5;
      AltarPossible = false;
      WallSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      FloorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      GenerateDoor = true;
      DivineMaster = 0;
      GenerateTunnel = true;
      GenerateLanterns = false;
      Type = ROOM_NORMAL;
      GenerateFountains = false;
      Shape = ROUND_CORNERS;
      Square, Pos 2,2;
      {
        OTerrain = stairs(STAIRS_UP) { AttachedArea = PLANT_ENTRY_LEVEL; AttachedEntry = PLANT_ENTRY; }
        EntryIndex = STAIRS_UP;
      }
    }

  }

  Level GENEFOURX_LAIR;
  {
    Description = "Genefourx Versana's Lair";
    ShortDescription = "GenefourxLair";
    LevelMessage = "You feel a fairly big evil rooted here.";
    FillSquare = WATER liquidterrain(UNDERGROUND_LAKE), 0;
    TunnelSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
    Size = 64, 36;
    Rooms = 15:20;
    Items = 45:50;
    GenerateMonsters = false;
    IgnoreDefaultSpecialSquares = true;
    ItemMinPriceBase = 90;
    EnchantmentPlusChanceBase = 60;
    BackGroundType = GRAY_FRACTAL;
    DifficultyBase = 90;

    Square, Random NOT_WALKABLE;
    {
      Character = carnivorousplant(LILY);
      Times = 14;
    }

    Square, Random;
    {
      Character = carnivorousplant(GREATER);
      Times = 8;
    }

    Square, Random;
    {
      Character = carnivorousplant(GIANT);
      Times = 14;
    }

    Square, Random;
    {
      Character = carnivorousplant(SHAMBLING);
      Times = 20;
    }

    RoomDefault
    {
      Pos = 2:XSize-8,2:YSize-8;
      Size = 3:7,3:7;
      AltarPossible = false;
      WallSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      FloorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      GenerateDoor = true;
      DivineMaster = 0;
      GenerateTunnel = true;
      GenerateLanterns = false;
      Type = ROOM_NORMAL;
      GenerateFountains = true;
      IsInside = true;
      GenerateWindows = false;
      UseFillSquareWalls = false;
      Shape = ROUND_CORNERS;
      Flags = 0;
    }

    Room
    {
      Pos = 2:XSize-6, 2:YSize-6;
      Size = 5,5;
      AltarPossible = false;
      WallSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      FloorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      GenerateDoor = true;
      DivineMaster = 0;
      GenerateTunnel = true;
      GenerateLanterns = false;
      Type = ROOM_NORMAL;
      GenerateFountains = false;
      Shape = ROUND_CORNERS;
      Square, Pos 2,2;
      {
        OTerrain = stairs(STAIRS_UP);
        EntryIndex = STAIRS_UP;
      }
    }

    Room
    {
      Size = 8,8;
      Pos = 2:XSize-9,2:YSize-9;
      FloorSquare = solidterrain(DEAD_GRASS_TERRAIN), 0;
      WallSquare = solidterrain(DEAD_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DEAD_GRASS_TERRAIN), 0;
      GenerateFountains = false;
      AltarPossible = false;
      GenerateLanterns = false;
      GenerateDoor = false;

      Square, Pos 4,4;
      {
        OTerrain = stairs(STAIRS_DOWN);
        EntryIndex = STAIRS_DOWN;
      }

      GTerrainMap
      {
        Pos = 1,1;
        Size = 6,6;
        Types
        {
          # = POISON_LIQUID liquidterrain(UNDERGROUND_LAKE);
        }
      }
      {
        .#..#.
        #....#
        ......
        ......
        #....#
        .#..#.
      }

      CharacterMap
      {
        Size = 8,8;
        Pos = 0,0;
        Types
        {
          c = carnivorousplant(GIANT);
          g = genetrixvesana(GENEFOURX);
          s = carnivorousplant(SHAMBLING);
        }
      }
      {
        ...ss...
        .s....s.
        ...cc...
        s.cg.c.s
        s.c..c.s
        ...cc...
        .s....s.
        ...ss...
      }


    }
  }

  Level POND_LEVEL;
  {
    Description = "Tranquil pond";
    ShortDescription = "TranquilPond";
    LevelMessage = "You find yourself in a calm lagoon.";
    FillSquare = solidterrain(GRASS_TERRAIN), 0;
    TunnelSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
    Size = 18, 18;
    Rooms = 10:15;
    Items = 50;
    GenerateMonsters = false;
    IgnoreDefaultSpecialSquares = true;
    ItemMinPriceBase = 110;
    EnchantmentPlusChanceBase = 80;
    BackGroundType = GRAY_FRACTAL;
    DifficultyBase = 70;

    RoomDefault
    {
      /* Inperceptable - for paths */
      Pos = 2:XSize-4,2:YSize-4;
      Size = 3,3;
      AltarPossible = false;
      WallSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      FloorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      DoorSquare = solidterrain(DARK_GRASS_TERRAIN), 0;
      GenerateDoor = true;
      DivineMaster = 0;
      GenerateTunnel = true;
      GenerateLanterns = false;
      Type = ROOM_NORMAL;
      GenerateFountains = true;
      IsInside = true;
      GenerateWindows = false;
      UseFillSquareWalls = false;
      Flags = 0;
    }

    Square, Random;
    {
      OTerrain = stairs(STAIRS_UP);
      EntryIndex = STAIRS_UP;
    }

    Room
    {
      /* Massive pond */
      Pos = XSize/4,YSize/4;
      Size = XSize/2,YSize/2;
      WallSquare = WATER liquidterrain(UNDERGROUND_LAKE), 0;
      FloorSquare = WATER liquidterrain(UNDERGROUND_LAKE), 0;
      DoorSquare = WATER liquidterrain(UNDERGROUND_LAKE), 0;
      Shape = ROUND_CORNERS;
    }
  }



In material.dat:
In solid
Code:

  Config DEAD_GRASS;
  {
    StrengthValue = 1;
    ConsumeType = CT_MISC_ORGANIC;
    Density = 75;
    Color = rgb16(148, 100, 5);
    NameStem = "grass";
    AdjectiveStem = "grassy";
    Flexibility = 1;
    AttachedGod = SILVA;
    CommonFlags = Base&~CAN_BE_WISHED;
    BodyFlags = Base;
    InteractionFlags = CAN_BURN;
  }


In glterra.dat
Code:

  Config DEAD_GRASS_TERRAIN;
  {
    OKVisualEffects = MIRROR|FLIP|ROTATE;
    MainMaterialConfig == DEAD_GRASS;
    NameSingular = "ground";
    BitmapPos = 16, 16;
  }


In define.dat
Code:

#define DEAD_GRASS (SOLID_ID + 65)

#define DEAD_GRASS_TERRAIN 9

#define PLANT_LEVEL 13
#define GENEFOURX_LAIR 14
#define POND_LEVEL 15

#define SHAMBLING 3
#define LILY 4

#define GENEFOURX 1


And finally, a few graphics from that previous thread:

or copy/paste if Tripod says no:
http://squashmonster.tripod.com/IVANplants.png
Those go directly to the left of the second row of mushrooms, a bit above and to the left of Genetrix Vesena.

So, hopefully I didn't miss anything. Have fun playing with what's there.
Back to top
View user's profile Send private message
Atomic
archangel


Joined: 12 Jan 2005
Posts: 1442
Location: In the fire

PostPosted: Wed Apr 27, 2005 3:12 am    Post subject: Reply with quote

As interesting as another themed dungeon branch would be, I really don't think another carniverous plant dungeon is nessacary. Although, that is probably an excellent way to learn to make dungeon branches...

Perhaps the devs (or myself, if I get around to it) would consider coming up with a way to cause the MonGen to spawn within a "family" of monsters?

P.S. I love what you named the grandmother: genefourex vesena. Not exactly scientific sounding but funny as hell...
_________________
"Also, I'm the only person I know capable of a pelvic pary and riposte." -- Squashmonster

I moderate in red.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
TheFallenOne222
gibberling


Joined: 03 Apr 2005
Posts: 166

PostPosted: Wed Apr 27, 2005 5:04 am    Post subject: Reply with quote

Why in ELPURI_CAVE?

Why not make it a completely seperate "side quest" dungeon you could do so there's not just GC and UT?
Back to top
View user's profile Send private message
blob
elder dark mage


Joined: 28 Mar 2005
Posts: 999
Location: Idling in AFK-land

PostPosted: Wed Apr 27, 2005 11:29 am    Post subject: Reply with quote

Maybe its only a temporary place ?

One thing: I dont know their attributes but i just hope the new plants are not super powerful compared to the other plants. Like in many games where you meet level-up version of shitty monsters with another color and about 3 or 4 times more strengh than the original....Its just something i dislike.
If it was a side dungeon that you could visit between UT and GC it could be nice.Or it might just be too many carnivor plants in a row.Can be nice as a side branch of GC but more like at a low level ( from 2 to 7 i dont know) but i read on the first thread that it was level 13 ? Frightens me a bit

A family type of monster spawning would be really usefull ( notably for an alien level ).I hope someone could make it
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
SquashMonster
blink dog


Joined: 05 Feb 2005
Posts: 297
Location: The spot right next to the spot where I am.

PostPosted: Wed Apr 27, 2005 11:29 pm    Post subject: Reply with quote

It's in the GC right after Oree's lair, dungeons 13 to fifteen, if you trust the level number at all. The actual side branch shows up in GC4.

I'd say a whole host of dungeons outside the GC and UT would be a great deal of fun, but it wasn't quite in my skill range at the time.

If I remember right, the plants I made are around the same toughness as a giant carnivorous plant. They should be around the right level.

I agree that carnivorous plants isn't the best theme. I figured this would be the first of many.

Thanks on the naming compliment :D.
Back to top
View user's profile Send private message
blob
elder dark mage


Joined: 28 Mar 2005
Posts: 999
Location: Idling in AFK-land

PostPosted: Thu Apr 28, 2005 4:42 pm    Post subject: Reply with quote

Fine Smile
Do you plan to make the grandmother a bit different than Genetrix ?
Could she uproot herself to chase an escaping intruder ? Or have any special attack ?
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Atomic
archangel


Joined: 12 Jan 2005
Posts: 1442
Location: In the fire

PostPosted: Thu Apr 28, 2005 8:09 pm    Post subject: Reply with quote

I think making a 2x2 monster move could be a problem for the game... would it be able to handle narrow corridors?
_________________
"Also, I'm the only person I know capable of a pelvic pary and riposte." -- Squashmonster

I moderate in red.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
blob
elder dark mage


Joined: 28 Mar 2005
Posts: 999
Location: Idling in AFK-land

PostPosted: Thu Apr 28, 2005 8:20 pm    Post subject: Reply with quote

well vladimir knows how to deal with them Rolling Eyes
If its not a good way to deal with walls, i see only 2 solutions:
- If isnt yet done maybe it is not too difficult to code that a 2x2 creature is blocked when it encounters a narrow corridor ?
- Maybe the special level of the boss could avoid the problem with no narrow corridors.Only 2 space corridors and rooms with double doors, or another giant room... There could be many type of levels avoiding narrow passages.
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Atomic
archangel


Joined: 12 Jan 2005
Posts: 1442
Location: In the fire

PostPosted: Fri Apr 29, 2005 1:58 am    Post subject: Reply with quote

They'd probably also get pretty hung up on corners, not unlike normal monsters do currently. Only more so.
_________________
"Also, I'm the only person I know capable of a pelvic pary and riposte." -- Squashmonster

I moderate in red.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Ighalli
gibberling


Joined: 18 Jan 2005
Posts: 138
Location: Pennsylvania

PostPosted: Fri Apr 29, 2005 2:22 am    Post subject: Reply with quote

Actually, they just plow through walls. Elpuri, Vald, and Lobh-se all do that and as far as I know they are all the 2x2 monsters that move right now.
Back to top
View user's profile Send private message AIM Address
Freelance Berzerker
orc general


Joined: 28 Jun 2006
Posts: 805
Location: In Valhalla, currently posing as "Engels"

PostPosted: Fri Jul 28, 2006 3:10 am    Post subject: Reply with quote

Hello Squash,

I tried your mod but got the following error:

Program Aborted!

Illegal datavalue AttatchedGod found while building up solid config #4162, line 1036!

All I did was copy your files over the original 0.50 files and then fire up the game.
Back to top
View user's profile Send private message
Somagu
werewolf


Joined: 01 Sep 2005
Posts: 547
Location: In AFK-Land™

PostPosted: Fri Jul 28, 2006 7:14 am    Post subject: Reply with quote

Perhaps it requires the CVS version?
_________________
FROG BLAST THE VENT CORE!
Do not mess with the NPSRMRNPPMASZoPawKaBfoG
[01:21] Somagu21: Jacques Flambč
[01:22] guardsheep2000: also known as the greatest firework known to man
I am not under crack. ~~Blob
Back to top
View user's profile Send private message
Freelance Berzerker
orc general


Joined: 28 Jun 2006
Posts: 805
Location: In Valhalla, currently posing as "Engels"

PostPosted: Fri Jul 28, 2006 7:25 am    Post subject: Reply with quote

I still don't know how to work with that version.
Back to top
View user's profile Send private message
dalboz
goblin prince


Joined: 23 Jul 2005
Posts: 490
Location: in front of the computer screen

PostPosted: Fri Jul 28, 2006 11:19 am    Post subject: Reply with quote

you just have to copy/paste any files the CVS version is missing from the 0.50 version. or something.
_________________
"Think like a madman"
Back to top
View user's profile Send private message
Freelance Berzerker
orc general


Joined: 28 Jun 2006
Posts: 805
Location: In Valhalla, currently posing as "Engels"

PostPosted: Fri Jul 28, 2006 3:04 pm    Post subject: Reply with quote

OK, I'll try that.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    ivanforum Forum Index -> Programming All times are GMT


Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2002 phpBB Group