• We are currently performing site maintenance, parts of civfanatics are currently offline, but will come back online in the coming days. For more updates please see here.

Dungeon Adventure MOD MOD

I'm pretty sure it is possible.

The % chance seems like it should use use an pyPerTurn effect, which would actually be promotion dependent rather than unit specific.

It would probably make sense to check in CvEventManager and call the same effect if a unit tries to enter a tile with such a unit (checking similar to how treants work)



Hmmm...for added range/damage, how about making the unit gain free xp, and basing the range and damage amounts depend on its xp? This would require python of course, with the exact range/damage amounts hardcoded. You could also have the pyPerTurn effect look at its amount of xp for the chance of going off, combined with a random number generator.


You could also make these units gain free promotions (one promotion could randomly give another, py effect could add them, or you could just make this line of promotions the only ones available to a new unitcombat_trap) which might be able to let you make the damage spell itself not rely on python at all. Promotions can change the amount of spell damage a caster can do, but not range (I really think Kael needs to make extension boost range, which would make your request easier)
 
@Psychic_Llamas:

No worries on hijacking! I like to hear about interesting ideas!

As far as your spell goes, it would be complex, but doable, I think.

The first part is just a summon of a special unit. Easy enough.

For the rest of it, you would need to have a python script that the unit checked each turn, and that could keep track of how many turns had passed since creation.

The other option, more complex, is to have a series of promotions that change the characteristics of the unit.

For example, the unit starts with the "Comet" promotion. This allows the unit to cast a unique spell called "Imacomet." It also starts with Combat1

The python for the "Imacomet" spell would have a series of "if" statements that check for certain promotions and take different actions accordingly.

So the first "if" statement could look for the "combat1" promotion, and if it does exist, the unit would take action against eligible units within a set radius for a given result of a "random roll."

The next "ifs" would check for combat2, combat3, etc. with their scaled resulting actions.

After checking for the appropriate action, depending on the Combatx promotion, the code would check for "growth." The code would check for promotions again, but in descending order, first combat5, down to combat 1. If it finds a given level of promotion, it takes action to remove that promotion, and award the next higher one instead. This could be 100% likely to happen or have a % chance to happen.

And then the loop ends.

You would not need a req def, since the spell is cast every turn. One of the checks in the spell itself could check to see if there is an enemy unit on top of the comet. If so, the chance to "blow up" would be set at 100%. In fact once of the initial variables could be defined as

Code:
iBlowup = 0

And iBlowup would change to 100 if an enemy unit is on top of the comet. It would change to a given number for each level of growth of the cmet, too.

Well, that's just my two cents. Complex idea, indeed, but I think it can be done!
 
Well, your way it would blow up if there happen to be other units on the same tile whenever the pyPerTurn function ran. I believe that means that units could still move through the tile safely if they don't stop there, or if you get lucky. If you want t to happen as soon as a unit moves into the tile, you would need a check in def onUnitMove(self, argsList):
 
hmmm

so, let me see if i understand this:

the comet unit would start with "imacomet" (or whatever) promotion, and when the python sees this promotion it ausomatically grants that unit a combat promotion each turn untill it is upto combat 5.
as this happens, python would check to see if a unit has 'imacomet' and combat 1, if it does it causes a 10% chance for the unit to blow up causing damage to units on top of it only. it would then check for imacomet +Combat 2, and if it finds any then it would cause a 20% chance that it blows up damaging units on top of it a bit more. continues on until it checks for imacomet+combat 5, when it causes 100% detonation and damages all units within 2 squares of it significantly.

is that about right?


would an easyer way be to make the spell create an improvement called 'Comet I' which automatically upgrades to 'comet II' on the next turn, and then comet II upgrades to comet III etc. like the tower/castle/fortress mechanism but much faster.

python would then run the checks for % chance detonation and then cause the damage and area of effect for each improvement level? the problem here would be that it wouldnt be invisble, but i dont really mind if it is invisible or not, im pretty sure a horde of orcs would see a massive comet hurtling towards them, dont you? :p


and heres a thought, if i get this to work Lutefisk could use it for timed traps which rogue heros could build :p
 
Yes, I am still obsessing with my traps.

I changed them over to a onUnitMove function in the CvEventManager file, and I am much happier with the way they work. Traps now trigger as soon as you step on them -- right in mid-turn.

I will do this for Glyphs, too.

I am next going to polish off some interface graphics and sound for these items.

Anybody know a good WAV file editor? I am trying to add some dead air to the beginning of a certain WAV file, so that I can repurpose it to a new use.

EDIT: I downloaded Audacity. Works like a charm! Now my "permanent" traps and Glyphs have a tell-tale "reset" sound to let the player know something is up.
 
Heads up FYI D&D V4 is coming out this summer :)
me and my friends play (we are only 12-16 hehe)
 
Heads up FYI D&D V4 is coming out this summer :)
me and my friends play (we are only 12-16 hehe)

I still have my old V1 AD&D books, copyright 1979. In fact I use the old Dungeon Masters Guide and Players Handbook for ideas. Gotta love the old DMG with the picture of the Efreet on front.
 
It is nice to have this done and working the way I want. A screen shot is below:

Spoiler :

finaltraps0000yw9.jpg


This image is from WorldBuilder view, so the hidden units are visible. The first room holds a trap, and the room further in holds a glyph.

Traps can be:
1. single tile traps that trigger on their own tile only or
2. area traps that trigger on their own tile and within a radius of one tile.

Trap units come with free "trap" and "hidden" promotions. If you want a trap to be an area trap, you go into Worldbuilder, remove the "trap" promotion, and give the trap the "area trap" promotion instead.

Traps have different effects, depending on whether they are given additional promotions. The default, if there is no additional promotion, is that the trap is a purely mechanical trap that does physical damage. I used certain mana promotions, like death1, to flag for other damage types. Accordingly, a trap can deal out any of the 8 damage types, but it can only inflict that one type, not multiple types.

Traps can also be given the "defensive" or "rusted" promotions. (Currently, these are stand-ins for trap-specific promotions that will have the below listed effects.)

The "defensive" promotion makes the trap "rehide" itself after each triggering. I'll probably make a new promotion called "concealed" to cover this function at some point. Traps without this promotion reveal themselves after the first triggering. A revealed trap can be rushed by a unit -- traps have low strength, but cause extra physical damage and explode on combat. This is the crudest way to remove a trap, but only works on traps that have been revealed.

The "rusted" promotion causes a trap to destruct after being triggered. This is to designate a "one-use" trap. I'll probably make a new promotion for this function called "disposable" or something like that. (Right now, it is technically possible for spell casters to junk traps by casting rust on them! Hmnn. Maybe I'll keep it that way.)

Glyphs are always "area trigger" units. They cast spells instead of inflicting a damage type directly. In a sense, they are like magical traps. Glyphs can have the "defensive" and "rusted" promotions just like traps, and they have the same effects.

Took me a while to get the interface messages to display correctly but that is done. I also rigged up some sound effects that get added on to the traps that re-conceal themselves -- sort of a "reset" sound that happens a bit after the main activity. I added this as an auditory clue to the player to let them know that they are dealing with a persistent trap instead of a disposable one.

Well, that's all for this update. I think my next focus will be to extend the "grab" and "drop" functions to more bonuses than just horses. I plan to make these bonuses important for enabling upgrades. Since this is a "one city" type of game, the player will have to find these resources and then carry them back to the cultural radius of the campfire (city). Some bonuses may also be needed as material components for the more powerful spells!

'Til next time!
 
I goofed around with some art today -- and made the main and loading screens. Here is a screenshot of the loading screen:

Spoiler :

loading0000pg6.jpg


I'm trying to give the mod an old Pencil and Paper D&D feel.

Hope you like it!
 
@mtagge: You are hired!
Sorry for leaving you hanging over the weekend, I don't have access to the Internet at home, and we have half day Fridays. :(

Let me know if you still need help with the trap code by PM, but it sounds like you already have it taken care of. If it helps, feel free to take a look at my code posted in the conditional promotion thread, and I might also recommend the code in Final Frontier for damage based on tile hazards.
 
I'll 3rd that. I want to play!

The best part of games like these were the HoF and seeing how far your different games progressed until your Hero died. :D
 
I'll 3rd that. I want to play!

The best part of games like these were the HoF and seeing how far your different games progressed until your Hero died. :D

I am going to try to make this an escalating game, like rogue. It won't have multiple levels, of course, but stuff will re-spawn on the map from time to time. I am hoping to hijack and repurpose the Armageddon Counter to make it act as a sort of "let's gradually increase the difficulty" ticker. Depending on the AC, different monsters, goodies, and traps will spawn. The more baddies you kill and good stuff you find, the higher the AC gets.

Eventually, it will get so difficult that the Heroes will almost certainly die. The fun is to see how far you can get. Like rogue, this will most often be a 15-30 minute game from start to finish, maybe a bit longer.
 
Sweet work all around Lute :) But could you use [ spoiler ] [ /spoiler ] tags around your images, or reduce the size a bit, for people who have their browsers on slightly lower resolutions? (Though I always thought I had mine fairly large. Must be the small screen :))
 
I am going to try to make this an escalating game, like rogue. It won't have multiple levels, of course, but stuff will re-spawn on the map from time to time. I am hoping to hijack and repurpose the Armageddon Counter to make it act as a sort of "let's gradually increase the difficulty" ticker. Depending on the AC, different monsters, goodies, and traps will spawn. The more baddies you kill and good stuff you find, the higher the AC gets.

Eventually, it will get so difficult that the Heroes will almost certainly die. The fun is to see how far you can get. Like rogue, this will most often be a 15-30 minute game from start to finish, maybe a bit longer.

So each random map will be played until the Hero dies? Gotcha. I was wondering if it was like that or if each map was finite and once finished the Hero could then be exported into a new map (game) somehow. I just can't wait to see the HoF! How many categories can you have? Most kills? Highest Lvl Hero? Most items recovered?
 
Are you going to be keeping with the CIV IV combat method throughout this entire mod (i.e. all combats are fatal to one of the two parties) or do you plan on implementing some way so that each attempt at combat will be interrupted and replaced with some sort of a strike that does a certain amount of damage and may or may not actually land?

If you keep with the original way of doing damage I imagine that it could end up being a short game indeed more frequently than desired. Shouldn't be too hard to do in python. The other workaround I would suggest for some of the mobbing tactics would be to implement a stacking limit. Interrupt the canMove function to prevent movement to a space with a friendly model (or whatever the limit is).

Just throwing out ideas, feel free to call me crazy. I might mess around with some code of that sort as I get free time during the week. Maybe make the unit's level determine the chance to connect, the combat strength determine the damage and setup some promotions to affect each of the numbers.
 
@woodelf: I'd love to figure out how to export information from a "finished" level to a new map. There has been talk about that elsewhere in these fora but to my knowledge, no one has pulled it off yet. So -- Dungeon Adventure will ikely be a single map thing at first. But it could be a single player on a huge map. That provides plenty of real estate to explore.

As far as maps being random -- I am totally at the mercy of the benevolence of a map scripter to accomplish that. It would be great to come up with a map script that spat out dungeons, but I have no clue how to do that. At least in the beginning, maps will be hand made in WorldBuilder. But people can make map/scenarios and trade them around, so it won't be too terrible. I am trying to make a solid, easy to use schema for WorldBuilder so that it will be painless to make these dungeons.

@xienwolf: Oops. Yes, I will use spoiler tags for my big images. Those are screen shots off of a widescreen LCD, so the aspect is a bit, well, huge. I suppose I could rescale them, too.... but that sounds like work! :p

@mtagge: I'll probably keep the Civ4 combat model. The player starts with 3 adventurers, and as the campsite accumulates Great Person points, more adventurers will join the party. The player can also sometimes capture and convert "monster" units, and will have the ability to build or recruit "cannon fodder" units to help the main party. Don't forget that wizards have summonables, too. In all, the player will need to be a bit more strategic about what monsters to attack and when.
 
Back
Top Bottom