Schattenländer - v0.1d released (Feb 10/07)

正在查看此主题的用户

The Native tutorial box is gone.... now it's "Your enemies take you captive and you suffer no real consequences whatsoever."

Anyway, back on track:

We can have a "lose stuff" script that just grabs random non-quest items from your inventory and your comrades'. Parameterised so that in certain situations, you lose more stuff than others.

Also, a wounding script that kicks in randomly if a party member is badly hurt and a battle is lost. If a companion gets a lot of wounds, s/he dies. In really bad situations we can actually nuke the entire party with (remove_party, 0), (tutorial_box, "str_you_are_dead"), forcing a reload. Side note: it would be interesting to code a endurance/wounds system like in Darklands. HP = endurance. You suffer wounds (Darklands "strength damage") in combat if you sustain a lot of HP damage in a short time. Wounds take a long time to heal and impair your combat skills; HP heals basically overnight and doesn't affect your fighting ability.

We also need a realistic way of resolving the combat if the player falls early but the rest of the party is mostly intact. Might be able to borrow some of Native's battle-resolving code for this.

And of course in each situation, defeat will send you to a completely different game menu.

P.S. St. Jehoshephat is hilarious. You should have a mad hermit preaching his virtues in the game. Prayers to him typically take the form of loud exclamations, and typically results in... nothing much happening at all.

PPS. We can now skip the prisoner exchange / taking screen completely for ALL battles. No need for kludges or workarounds to avoid non-hero party members or prisoners.
 
Interesting.

I'm just doing the saints' catalogue now - well, starting it, anyway - and I'd been wondering how to distinguish the two types of effect.

A possibly simpler provisional solution I was thinking of was this: Endurance effects (pretty much always consisting of healing) are used before a round of combat, and wear off after the round is done.  (We penalize you health equal to some ratio, like "you gained 20% of what you had then, lose 20% of what you have now" when the round of battle finishes.  Can't kill you, but can suck.)  Whereas Health healing effects are real healing.

I'm open to either alternative.  I'd love to see a long-term wounds system which actually penalized your stats until you healed; maybe HP is Endurance, and this new quantity which actually carries penalties is Health; Health damage always does commensurate Endurance damage, but not vice-versa.  But I don't want to commit to something like that until we're closer to being able to implement it, in terms of manpower.

For now, actually, here's a simpler version: Endurance healing repairs one party member's hit points.  Heath healing repairs all members' hit points.  This meshes well with the saints paradigm I'm planning, where it's the party as a whole who "knows" a list of saints, and the party as a whole which logs its divine favour and virtue scores.  I'm strongly inclined to use this one for now, and leave further refinements for a much later date.

I do like the idea of it being possible for your companions to die; the party-dies thing is less appealing, but I'm open to considering it.  In some ways better is simply the idea of permanent damage.  If you hit "dead" then you'll take real stat losses, which can only be regained by buying them back again.  (Or some special exotic sources like prayers to St. Lazarus.)  Either way I do very much support this being an "Ironman" kind of mod.

PS: Can't you just see an item, "Godawful Ugly Set of Clothes", which St Jehosephat checks for; if he finds it equipped, he's immensely powerful, and otherwise he's useless.  Like the one who grants reputation gains only if you have a musical instrument, only sillier.  (No, I don't intend to actually put that in, it's just funny.)
 
If you look in the code I sent, there is already a wound system of sorts.  It is only applied at the beginning of combat due to previous limitations, but you could now apply the wounds in a trigger that ran ever .01 hours.
Extending it so that you have a health that is kept track of separately from stamina and always give full health at beginning of combat would be easy, but the problen is that the armor does not work like in darklands so that works out to be a pretty useless stat.

As for penalties, when fighting wild beasts (which is now doable), someone should be eaten.  Otherwise, I liked the beaten severely and all your equipment taken aspect of darklands.  Also, characters should be given a knife if they lose all other weaponry.
 
Bryce - I can still think of some ways to do it.  Scan the PC group during combat to see when their health drops, roll/compute how much of that damage was Health loss (permanent) instead of just Endurance loss (a higher percentage should be permanent, the larger the individual wounds are), track it separately, apply penalties based on it.  Could be computationally intensive, potentially, but arguably not that bad.

Still keeping away from that, for now.

Another FYI that I just ran into... trying to load too long a string (from module_strings) causes the game to crash.  Still working to determine just what that length is.  However, you can still feed a menu five strings, each 75-90% of that max length, and it'll be just fine (though if the font is too large it may overrun the menu options).  So I'm going to need to break each saint's description down into two substrings. Sigh...

On the plus side, all 136 saints now have their descriptions loaded into the module.  If we continue with the sneaky way I'm handling saints, we'll need to cut about a dozen saints from the roster, which I don't think will be at all difficult since lots of them risk being obsolete.  'Cause, y'see, the game also can't tolerate more than 128 different factions... and we're not otherwise using more than about three or four factions.  And factions get slots.

Saint Agatha can now be prayed to with (most of) her proper description, and can have her various saintly functions and circumstances coded.  As can the rest of 'em, though as there's no mechanism to learn new saints, Aggie's all you get for now.  (I may put Jehosephat back in once I start testing choices amongst saints.)
 
Hellequin 说:
Bryce - I can still think of some ways to do it.  Scan the PC group during combat to see when their health drops, roll/compute how much of that damage was Health loss (permanent) instead of just Endurance loss (a higher percentage should be permanent, the larger the individual wounds are), track it separately, apply penalties based on it.  Could be computationally intensive, potentially, but arguably not that bad.

Still keeping away from that, for now.

Another FYI that I just ran into... trying to load too long a string (from module_strings) causes the game to crash.  Still working to determine just what that length is.  However, you can still feed a menu five strings, each 75-90% of that max length, and it'll be just fine (though if the font is too large it may overrun the menu options).  So I'm going to need to break each saint's description down into two substrings. Sigh...

On the plus side, all 136 saints now have their descriptions loaded into the module.  If we continue with the sneaky way I'm handling saints, we'll need to cut about a dozen saints from the roster, which I don't think will be at all difficult since lots of them risk being obsolete.  'Cause, y'see, the game also can't tolerate more than 128 different factions... and we're not otherwise using more than about three or four factions.  And factions get slots.

Saint Agatha can now be prayed to with (most of) her proper description, and can have her various saintly functions and circumstances coded.  As can the rest of 'em, though as there's no mechanism to learn new saints, Aggie's all you get for now.  (I may put Jehosephat back in once I start testing choices amongst saints.)

I will save you some time.  The length is 267 or 268. 

Yeah, I guess you could do it during combat.  I would not worry about computation expense in pretty munch anything you can do in M&B modding, btw.  Since you only have simple loops structures available it's nearly impossible to eat up any signifigant CPU time.  The problem with the scanning is that it is very difficult to figure out which troop corresponds to an agent.  The way I did it was extremely hackish and not 100% reliable.  After some damage had been suffered it would be impossible to tell who is who, instead of merely *mostly* impossible.


 
bryce777 说:
it is very difficult to figure out which troop corresponds to an agent.

New command in v0.804: agent_get_troop_id. I know, I know, I spent a day (and a lot of pain) in v0.73 making a tremendous hack that was obsolecised in v0.75.

By the way, I agree with leaving the wounds system for now. Let's just use HP, and if you lose, you get stuff robbed from you (or if you're fighting truly evil forces, you get dead or imprisoned). For the future I think we're agreed on how to implement it by tracking HP loss. For example, every 0.5 seconds, if HP loss within that time interval is greater than 50% of max hp then you lose a wound point (body level?). Each character has body levels equal to their HP divided by 10. Anyway all this is irrelevant for now.

Hellequin, for the saints that heal Strength damage just leave a placeholder. I hope we're not releasing betas until we've figured out the whole wounding thing. It's too big of a gameplay change to unleash on players in the middle of playing.
 
fisheye 说:
bryce777 说:
it is very difficult to figure out which troop corresponds to an agent.

New command in v0.804: agent_get_troop_id. I know, I know, I spent a day (and a lot of pain) in v0.73 making a tremendous hack that was obsolecised in v0.75.

By the way, I agree with leaving the wounds system for now. Let's just use HP, and if you lose, you get stuff robbed from you (or if you're fighting truly evil forces, you get dead or imprisoned). For the future I think we're agreed on how to implement it by tracking HP loss. For example, every 0.5 seconds, if HP loss within that time interval is greater than 50% of max hp then you lose a wound point (body level?). Each character has body levels equal to their HP divided by 10. Anyway all this is irrelevant for now.

Hellequin, for the saints that heal Strength damage just leave a placeholder. I hope we're not releasing betas until we've figured out the whole wounding thing. It's too big of a gameplay change to unleash on players in the middle of playing.

Wow, I missed that one when I was skimming through.  It seems like half the work I have previously done has been obsolesced by the new modding system.
 
Any ideas on how to auto-resolve combats when the player is knocked out?

Native has some code but it's very coarse-grained and more suited to battles between large armies rather than skirmishes between 3 NPCs on your side and 5 dudes on the other. It basically just takes turns killing troops on one party, then the other. Also Native code will certainly be inaccurate since it only looks at the levels of the troops in each party. In this mod the effectiveness of your party members should be correlated to their equipment and related buffs and debuffs (alchemical or saintly), whether you got your level 10 alchemist to train intensively in weapons combat, or if he's just a level 10 bookworm, etc etc.

For now we just need something that tells you

(a) do you win?
(b) if you do, how badly wounded are your guys?

Eventually when we've got combat potions and combat prayers working, they'll also come out of it with a few fewer potions and a little less divine favour. But that's in the future.

Ideas?

EDIT: By the way this is not high priority. For now we can say, if you get knocked out, YOU LOSE. Even if all your other guys are at full health and the remaining enemy is a river pirate with 1 hp left. But eventually it would be good to have accurate battle-resolution.
 
I would think that if your main character gets knocked out you should always be assumed to have lost and suffer some consequence.

But, it is an interesting idea to do autoreslove somehow.  Is that possible, now?  I will have to look into .804 but have been holding off due to thinking it was unstable and a new version would come out.  And this month is really not good for me due to company in town.
 
bryce777 说:
But, it is an interesting idea to do autoreslove somehow.  Is that possible, now? 

The details of the entire battle sequence can (and is) explicitly controlled using M&B script. Winning, losing, resolving, multiple rounds, prisoners, loot, everything.
 
fisheye 说:
bryce777 说:
But, it is an interesting idea to do autoreslove somehow.  Is that possible, now? 

The details of the entire battle sequence can (and is) explicitly controlled using M&B script. Winning, losing, resolving, multiple rounds, prisoners, loot, everything.

Wow, once again all my hard work for nothing, but it is good that these things will not be a huge pain any more.  I ALMOST tore into coding up a custom loot feature.  FGlad I didn't now,as that would have been a long and frustrating task.
 
The arenas in 0.803 (haven't checked in 0.804) keep going after you get knocked out - they literally just keep fighting until the NPCs are done.  I think if your side wins you still win, even.  (Should deliberately try it sometime - can I give Borcha a ticket to watch the fight and a crossbow?)

Ought to be able to work out how it's done.  May just be the omission of a scene ending condition, perhaps?
 
Hellequin 说:
The arenas in 0.803 (haven't checked in 0.804) keep going after you get knocked out - they literally just keep fighting until the NPCs are done.  I think if your side wins you still win, even.  (Should deliberately try it sometime - can I give Borcha a ticket to watch the fight and a crossbow?)

Ought to be able to work out how it's done.  May just be the omission of a scene ending condition, perhaps?

yeah, if you just take out the hero fallen trigger and replace with teams left fighting = 1 or whatever.  There is op for that.  Or do a try for agents and if there are no friendly agents left then it triggers.  Petty good idea, actually.
 
All well and good except for some scenes with obstacles, there's a chance that your guys will get stuck and be unable to find each other.
 
Ooh - here's a nice trick for that.

If the hero has fallen, let's accelerate matters a bit.  Every X combat time (10s real time?), if the hero has fallen, all agents suffer 1HP of damage.

Not only does this eliminate the worst-case thing with obstacles and the unending combat, it also speeds up the wait time you might have to spend, lying there unconscious while your wussy alchemist and an equally hapless NPC alchemist try vainly to murder each other, when armed only with broken glassware and harsh language.
 
Hellequin 说:
Ooh - here's a nice trick for that.

If the hero has fallen, let's accelerate matters a bit.  Every X combat time (10s real time?), if the hero has fallen, all agents suffer 1HP of damage.

Not only does this eliminate the worst-case thing with obstacles and the unending combat, it also speeds up the wait time you might have to spend, lying there unconscious while your wussy alchemist and an equally hapless NPC alchemist try vainly to murder each other, when armed only with broken glassware and harsh language.

That's not a bad idea.  Youc ould even set them all to zero since setting to zero does not actually kill them.  Sudden death elimination!
 
Hmm. That's an interesting idea. They won't fall dead if they reach 0 HP, but once one side has only troops with 0 hp, we'll give them 5 seconds to get hit and fall dead properly. If they're naughty and won't get dead then we'll just blow the whistle and declare the other side the winner and end the match.

Better formulation: every second, some random guy on each team loses 1 HP. Otherwise it's unfair to the bigger team.

By the way, what happens after you're knocked out and the battle continues? Are you staring at the floor or can you move around and watch (like counterstrike)? I'm guessing it's "staring at the floor".
 
Pretty much staring at the floor, yeah. Don't remember if I could rotate the view to look anywhere else on the field, or not.  I seem to remember not.

Ideally, we'd move the POV up high into the air so you could bird's-eye the action at that point.  Could we use an animation, and/or scripted movement mode, to turn you transparent and move you up in the air?  Then it wouldn't matter that you were staring at the floor; that'd be perfect, in fact.
 
Actually, you can still look around. It feels more like you're paralised from the neck down rather than knocked unconscious :smile:

Correct me if I'm wrong, but aren't encounters in the Schattenlaender supposed to be relatively small? This should reduce the chance of AI getting stuck at spawn (as it seems to happen mostly when reinforcements/new enemies arrive).
 
Yeah, but we still can't afford to assume it will never happen.  We may want some fairly complex maps to fight in, too.

------------------------------------

One thing I'm wanting, in terms of the prebattle prep, is a "time limit".  It's there in my code right now, but that's just a shade of the function I'm wanting to use it for.  Fisheye, if you're implementing that screen, I'd like to see that woven in.

The idea is that each encounter, or indeed each way of reaching the battle prep screen within each encounter (ambushed when trying to sneak up on them, versus bellowing "bring it on!"), will assign a value to $Preptime.  This delineates how many things you can actually do, to prep, before we kick things off.

Right now I'm thinking we implement this at the party level.  Later I'd like it to be per character, so that if one guy has, say, murmured a prayer, and that used all his prep time, then if you try for potion use he'll be ineligible, but someone else could still do so.  Lots of nice details available with that, and it shouldn't be that hard to code.

My mental guideline for the prep actions you can take, and their costs, goes something like this (if and when we fully implement it).  Note that it's not really a linear scale, though we'll treat it as such for simplicity; encounters which give you prep time 4 are really giving you many minutes, you control the timing of events, whereas prep time one is like ten seconds, you were ambushed or surprised.  Note that the actual prep time values are opaque to the player; all he sees is what his options are right now.

Prep Time cost 1:
  • Murmur a quick prayer (low odds of success, low DF cost)
  • Quaff or hurl a potion
  • Access character's inventory screen
  • Scenario-specific combat prep action (lower your friend off the rope, whatever) which loads scenario-specific strings and effects.
  • Issue an order/specific tactic (like going into battle unmounted, or wielding missiles first, or whatever) - good place to bring our Tactics skill into play, btw.

Prep Time cost 2:
  • Invoke a full prayer (standard odds, standard DF cost)
  • Apply a lotion or ointment
  • Use an offensive potion whose activation seems like it should be more complex (like maybe applying stone-tar to the ground)
  • Apply a quaffable potion to another character (both you and they pay the prep time cost)

Prep Time cost 3:
  • Lead the whole party in prayer (better odds, higher DF cost) - also costs everyone else one prep time
  • Apply a lotion or ointment to another character
  • Send one character around to an elevated position before battle - only available for certain fixed scenes, requires a Tactics roll, sends selected character to an entry point we've set up which is on a steep hill, up a tree, on a balcony, etc.

Prep Time cost 4:
  • Invoke a saint in full ceremony (best odds possible, highest DF cost) - costs everyone else three prep time, also consumes items like incense, sacramental wine, holy water.
  • Quickly mix and use a simple potion from ingredients on hand (severe penalties to the mixing roll, stick to your easier potions or you'll regret it).

Any comments?
 
后退
顶部 底部