View Full Version: Carnivorous plant lair GC branch

ivan >>Programming >>Carnivorous plant lair GC branch


SquashMonster- 04-26-2005
Carnivorous plant lair GC branch
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 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 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 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 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 Config DEAD_GRASS_TERRAIN; { OKVisualEffects = MIRROR|FLIP|ROTATE; MainMaterialConfig == DEAD_GRASS; NameSingular = "ground"; BitmapPos = 16, 16; } In define.dat #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.

Atomic- 04-26-2005

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...

TheFallenOne222- 04-27-2005

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?

blob- 04-27-2005

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

SquashMonster- 04-27-2005

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.

blob- 04-28-2005

Fine :) 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 ?

Atomic- 04-28-2005

I think making a 2x2 monster move could be a problem for the game... would it be able to handle narrow corridors?

blob- 04-28-2005

well vladimir knows how to deal with them :roll: 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.

Atomic- 04-28-2005

They'd probably also get pretty hung up on corners, not unlike normal monsters do currently. Only more so.

Ighalli- 04-28-2005

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.

Freelance Berzerker- 07-27-2006

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.

Somagu- 07-28-2006

Perhaps it requires the CVS version?

Freelance Berzerker- 07-28-2006

I still don't know how to work with that version.

dalboz- 07-28-2006

you just have to copy/paste any files the CVS version is missing from the 0.50 version. or something.

Freelance Berzerker- 07-28-2006

OK, I'll try that.

Forumer™ is Voted #1 Free Forum Hosting provider
Build your own community today with the largest message board hosting company.