Jump to content

Loren Tyr

Members
  • Posts

    856
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by Loren Tyr

  1. Again though, why does it matter that things are "kept magical" all the way down (to the bottom turtle)? Suppose an author were to write a (series of) books set in a world and written in a style very much akin to that of for example Forgotton Realms and other such traditional settings. Now suppose three hypothetical scenarios. In scenario A) the author states (outside of the books, eg. in an interview or whatever) that magic in his fictional world is magical through and through; it is not bound by rules, it is just a manifestation of divine will / the whims of fate / whatever. In scenario B) the author states the opposite: although not really explored in any way in the books, magic in his world is ultimately bound by rules of nature, and could (potentially) be scientifically studied and understood by a sufficiently advanced society in that world. In scenario C) the author says nothing on the matter at all. My question is, why would this matter? The books and stories are the same in all three scenarios. So why would these works be more 'Fantasy' in scenario A than in B? There is no meaningful distinction in my view, but at least the suggestion seems to be that those scenarios really are appreciably different in this respect.
  2. Well, I finally figured it out: Immunity on armour (like Blights) does work properly, because of old timey Damage Reduction (let's call it OTDR). What is now DR was originally called DT, and OTDR was called DR. The DT + OTDR was dropped ages ago for just having DR as it is now, but the code's still there with OTDR just set to 0 on all armour. But when armour gives a damage immunity, the CalcOTDR() function suddenly starts returning +Infinity, and when OTDR > 100 the "damage dealt" amount gets set to zero (it's a percentage, so 100% or more OTDR means no damage would be dealt). The DR is applied just before that, setting "damage dealt" to -Infinity in case of Immunity, which thus gets overridden by the entirely defunct OTDR mechanism. But this doesn't happen for Triggered Immunity since it isn't attached to armour, and thus leaves the OTDR at 0. Which is actually quite immaterial because the solution still is just to make the AdjustDamageByDTDR_Helper() function never return negative values, but you know... curiosity for its own sake and all that . Quite likely the devs actually already did this for 3.04 anyway, to fix the "-Infinity on the character screen damage totals" bug that came up before.
  3. I did some testing a while back, and got the following approximate reload times at 10 DEX (plus approximate time for a full attack cycle): - Crossbow: 3.3s (7.5s) - Pistol / Blunderbuss: 5.1s (9.3s) - Arbalest: 5.6s (9.8s) - Arquebus: 6.4s (10.6s) There is a bit of give in those reload times however, that happens with longer animations more generally. But it's close enough for comparison, anyway. Assuming no attack speed penalties/bonuses, the general breakdown of attack cycle duration is 0.2 (idle) + 1.5 (attack) + 2.5 (recovery) + R (reload). Other than the R, this is the same for all ranged weapons except hunting bow / wand / scepter. Which also means that of the reloading weapons, Crossbow actually suffers the most from attack speed penalties (but benefits the most from bonuses), because recovery takes up proportionally more of the total attack cycle. Eg. +20% attack speed means 0.75s recovery. For Crossbow that's a 6.7% increase, for Arquebus just a 4.7% increase. Anyway, with Gunner and Swift Aim (again, assuming no other bonuses/penalties, including armour) recovery becomes 0.8 x 2.5 = 2s and reload becomes 0.56 x R, so for Crossbow that's 1.85s, for a total duration of 5.55s.
  4. I'd go Ranger. It's a nice rounded class, would make good use of a crossbow (with Vicious Aim or Swift Aim, either one). And you have your animal for added variety as well as nice role playing flavour. I quite enjoying my current mage-wannabe implement ranger and her fluffy pet 'cat' (he grew a little bit on account of the magical mishap that sent her to Gilded Vale) for that in particular as well.
  5. Actually, most events are initiated three to five turns in advance (it varies a bit by type, as I recall), with a turn count timer. At the time they are initiated, two random numbers are rolled for them and stored. When the event timer has counted down, the event actually happens, but a lot of it is determined by the two previously rolled random numbers. For adventures, how big an adventure you get is a function of the random numbers and your prestige (with 'no adventure' being the bottom rung). So if you quickly get some extra prestige somewhere before the final turn of a count elapses, you may be able to move the adventure size up a class, but it is largely fixed. The particular adventure from that size class that you actually get is decided only when it starts however, so for that reloading does help (as Prototype's tests also bear out).
  6. I'm not sure I would go for a Quick Switching style with crossbows though. Their reload time is much shorter than others, off the top of my head I think about 3.3s (vs about 5 - 6.5s for the other reloadables). Especially if you go for Swift Aim, with that and Gunner you get down to about 1.8s of reloading time (at 10 DEX, obviously). Switching-induced additional recovery is about 0.75s with Quick Switch (unless you do the cheat-switching thing), so that's just a 1 second gain and only for the first couple of shots, but at the cost of two talents (if you take Arms Bearer as well) and a strong pressure to use an Aumaua. And with Twin Sting the gap gets much smaller still. So personally, I'd probably just do traditional fire and reload with a crossbow and use those Talent slots for something else (and maybe take Wood Elf for the additional ACC).
  7. Does there need to be? On the face of it, I'd say one of the main dividing lines between stuff that gets classified as Fantasy and stuff that gets classified as Sci-Fi is the general type of setting; roughly, pre-modern era vs (post-modern) era. There's also an axis of real world plausibility to it, but that applies to both: make it too... plausible and you get more into (alternate) history fiction and science fact, respectively. Obviously a difference in setting by itself tends to evoke different themes, even apart from specific traditions and themes that accumulate in different genres. But it hardly implies that such fictional worlds have inherently different kinds of metaphysical underpinnings in some general sense. Whether Fate really just *is* or characters just believe it to be is largely immaterial to the story being told, as a rule. It tends to have a rather Nostradamus-like quality to it anyway, if nothing else simply because it would make for a rather boring story if Fate is outlined in detail at the outset and then proceeds to unfold exactly as described. And similarly, whether the unavoidable looming obstacle du jour is (allegedly) metaphysical in it supposed inescapability or just practically so (eg. whatever passes for the local incarnation of Evil Empire) doesn't seem of an overwhelming importance. Again though, why? I don't see why this would be a requirement for something to be fantasy. It makes it essentially impossible to tell from a work whether it is fantasy or not, since there is generally no way of telling whether things are *really* transcendent in some relevant sense or only seem to be / are believe to be (essentially the same problem that claims of transcendence in our own reality faces, really). And while nominally this could perhaps be resolved by a proclamation from the author, this would result in the quality of being fantasy or not getting entirely divorced from the actual work, raising the question: why should anyone care about it all?
  8. For sake of completeness I also looked at the *NameError* bug with Pain Link: if it groups multiple hits into a single collapsed list, at the top it says "*NameError*: 8 Hit" (or however many where hit), though the entries when you expand the list do correctly say (Pain Link). This message originates from ApplyAffectHelper() which processes the ReapplyDamageToNearbyEnemies ModifiedStat, where the PostDamageMessage() function gets called. Normally this gets called by the StatusEffect.WhenTakesDamage() function and gets passed an AttackBase object as its third parameter, but in this bit of code the third parameter is null. PostDamageMessages() reads the (Pain Link) directly from the StatusEffect object it's called on, but the BatchedMessage handling down the line reads the group name from a DamageInfo object that gets passed to it. PostDamageMessages() directly passes the AttackBase it gets into the new DamageInfo object that gets passed to AddBatchedMessage(), but in this case that's just null. Which means that DamageInfo.Attack is null, and so is DamageInfo.Attack.Owner; as is DamageInfo.Attack.Ability so it wouldn't know it's supposed to say Pain Link, but technically the *NameError* actually comes from ProcessBatched() trying to get the name of the DamageInfo.Attack.Owner object (hence "Tried to get name of null or destroyed GameObject." in the output_log.txt file). Anyway, hardly the biggest of bugs, but hopefully still worth the time to fix it (probably using the other DamageInfo constructor when attack is null in PostDamageMessages() would be easiest, though building an ad hoc AttackBase there should work as well).
  9. Hmm, I've been digging around a bit more to figure out exactly what's going on, because I couldn't for the life of me figure out how the -Infinity damage when hitting an immune enemy translated into 0 damage actually being dealt; rather than -Infinity damage, setting Endurance to +Infinity. I have since concluded that the latter is precisely what's happening: -Infinity damage is dealt, Endurance and Health are both set to +Infinity; then in the next Health.Update() (ie. pretty much immediately) the current Endurance and Health are checked against the maximum Endurance and Health, are obviously found to be higher, and current Endurance and Health are set to the maximum. Effectively, being hit while immune completely heals the character. I have verified this using AncientFire's save: walked Pallegina to the Spores and start combat, stand there doing nothing and getting hit. Fairly quickly she gets hit by a big enough stone to activate Triggered Immunity: Crushing, then the next time she gets hit by Crushing damage it registers as 0.0 in the combat log and her Endurance and Health are completely reset. This is again the -Infinity adjusted damage return value getting dodgy. The only thing I haven't been able to figure out is why this doesn't happen with enemies. That is, I tried to reproduce it on some Blights, but there hitting with an immune damage type doesn't do anything, as it's supposed to (and same for a Blight summoned by Hiravias, by the way). Doesn't seem to be an armour-based immunity vs Triggered Immunity difference, but it's unclear what is going on there. Anyway, whatever the reason, truncating the output from CharacterStats.AdjustDamageByDTDR_Helper() from negative to zero should resolve all these issues. EDIT: it does turn out that it differs between armour and Triggered Immunity (it does happen for both Fighter Triggered Immunity and Ryona's Breastplate, though). If I put Pallegina in Wind Blight Armour she is immune to Crushing damage but neither the above bug nor the Pain Link bug happen. Somehow in that case, the damage does get truncated to 0 for the armour-based immunity. Can't figure out where, though.
  10. I'd be quite for reducing the number of spells a Priest has in particular (and revamping the mechanics, but different discussion), if this coincides with different types of Priest (in their chosen God) get much more distinctive than they are now. Such that they really feel and play differently from each other much more, rather than each getting just a couple of optional talents and a unique spell thrown in and are otherwise pretty much the same.
  11. Yeah, it's definitely Triggered Immunity. Knowing the likely cause, I could easily reproduce it using your save game. You can see it in this screenshot Triggered Immunity gets activated, I get a couple of hits to the Immune type in, and there's your -Infinity damage. There's actually a bit of a delay because Pain Link is on a three-second cycle, the damage is only actually dealt at the end of each cycle. Anyway, the fix should be very easy. Just a matter of making sure that in the CharacterStats.AdjustDamageByDTDR_Helper() function, the reduced damage gets truncated to 0 if it is negative. I also remember now where this came up before, it was the bug that caused -Infinity to show in the Total Damage Dealt (or Received) on the character screen. I also checked why -Infinity damage is killing enemies, this is because the Health.ApplyDamageDirectly() function Pain Link ends up calling flips negative damage to positive (and logs an error, which duly shows up in my output_log.txt). Would probably be best to truncate negative damage to zero there as well, I'd say.
  12. It's caused by Triggered Immunity. I'm attaching a screenshot here because for some reason it's not possible in the Announcement & News forum.
  13. Keep in mind that Bash is an ability, so it gets +1 ACC per level. I'm fairly certain that's your hidden bonus, I don't think it's shown in the inventory ACC value components.
  14. That's a general issue though, that's just how additive bonuses work. This applies to all stats from all attributes, not just DEX. Whether that would be considered diminishing returns rather depends on your perspective. In any case, you'd need to switch to a multiplicative bonus (eg. speed x1.03 for every +1 DEX) for it to be a constant relative increase. Then from 10 to 20 DEX action speed would be multiplied by about 1.34, and by 1.34 again moving from 20 to 30 DEX. But now it would look counter-intuitive from the additive scale, because relative to the base action speed at 10 DEX that would be +34% for the first 10 DEX from 10 to 20, and +46% for the second 10 DEX from 20 to 30. Anyway, what it boils down to is that an action cycle duration is essentially built up as follows: (total duration) = (idle time) + (action duration) / (DEX modifier), where (action duration) = (animation time) + (recovery time) + (reload time, if any). And in fact the recovery time is just the animation time multiplied by a recovery parameter, so that can be simplified further. In any case, DEX scales the entire action duration, the only thing it doesn't affect is the idle time (around 0.2s, but it varies a bit). So to translate it to your example: not wearing armour, you have your normal 100% recovery duration. Adding Plate, you have 150% recovery duration. If you have 20 DEX, the DEX modifier is 1.3, so you will end up with (equivalent to) about 100/1.3 = 77% recovery duration when not wearing armour, and 150/1.3 = 115% recovery duration if wearing plate. Though of course in total you are better off, because DEX scales the animation duration as well. So extending the example to there, and let's assume you're attacking with a single fast weapon (1 second animation duration). Base recovery duration is (animation duration) / 0.6, so in this case 1/0.6 = 1.67sec. With this we get the following action durations: - normal, DEX = 10: 1 + 1.67 = 2.67 seconds - plate, DEX = 10: 1 + 1.67 x 1.5 = 3.5 seconds - normal, DEX = 20: 2.67 / 1.3 = 2.05 seconds (whereas DEX = 10 plus 77% recovery would be 2.28 seconds) - plate, DEX = 20: 3.5 / 1.3 = 2.69 seconds (whereas DEX = 10 plus 115% recovery would be 2.92 seconds) In other words, 20 DEX in plate is as fast as 10 DEX and naked.
  15. Hmm, it's negative infinity actually, which is quite telling. Hence also that particular large (negative) floaty number, that's actually 2147483648 = -2^31, which is the lowest value a signed integer (assuming 32 bit representation) can take and usually used to represent -infinity. This also gestures in the direction of an answer, because I do know of at least one way in which -infinity damage numbers can pop up: hitting stuff with a damage type they're immune to. Immunity is represented as +infinity DR, so the damage after DR becomes negative infinity, the "adjust for DT/DR" function doesn't truncate negative values to zero (there was another bug where this came up, don't recall which one; either way, I'd suggest implementing that trunctation). Many functions that process damage down the line do check for negative damage, but not all (clearly). Obviously, not sure whether that's what happened here, but it certainly is a good candidate. Do you remember whether any of your characters had immunity to the Spore's damage type (Fighter with (active) Triggered Immunity being the most likely possibility, I suppose)?
  16. I'd say "explicable" and "scientifically explicable" aren't that far apart, really. If something is explicable at all, then attaching a certain scientific rigour to it should be no problem. The problem with the Aphrodite myth from a scientific perspective is simply that it didn't happen to begin with. Given our reality as we understand it is also couldn't have, but that's essentially immaterial. Whether something is explicable or not is relative to the structure and principles of the reality (fictional or otherwise) it did happen in. In our reality, supposing that our current understanding of how it works is pretty much correct, it would be a good candidate for 'inexplicable' had it actually happened: the rules of the universe don't allow it, but it happened regardless. But it wouldn't be too much a stretch of the imagination to come up with a conception of an alternate reality in which the birth of Aphrodite could have happened in such a way. I can certainly go along with fantasy broadly defined as "has magic/supernatural stuff in it". Or at least that seems like pretty much a necessary condition; I'd be inclined for example to put a general "pre-modern era" rider on it, stuff like Star Wars definitely feels more like sci-fi to me, but that's a different issue. But I would deem things to be supernatural or not, magic or not, from the perspective of our own reality. It bends, to some significant degree, the rules of what *we* know to be possible; whether the fictional world just has somewhat different rules, or has the same rules as ours but a tendency to break them, seems largely immaterial. And to some extent you have to wonder whether even that might be needed. For example, a diversity of sentient races like elves, dwarves, orcs and whatnot is certainly a staple of fantasy. Not enough to qualify it by itself, but add a Middle Age-y setting and some more exotic critters and it would very likely be perceived as fantasy, even though none of these elements really qualify as supernatural in some "breaking the known rules of (our) reality" sense. And certainly, atheism as we generally encounter it tends to be just as down on God's menagerie of helper monkeys and other such things as it is on the man Himself (though throw a rock on the internet and you'll easily hit three people who declaim the non-existence of God and the defend the existence of UFOs in the same sentence, so let's not overstate the consistency of the average atheist either). But indeed, all those things are entirely lacking in the evidence department, whereas in your typical fantasy world magic clearly exists. But I would argue that an (interesting) atheism in a world of magic would cast doubt on things that aren't so clearly demonstrable. That magic exists doesn't mean that all the divine beings of assorted lore in that world exist as well, and are all what they are believed to be. The rules of reality may be different, but those of rational belief stay the same (I would argue). Obviously, whether that kind of fantasy world *appeals* to someone is a different question. I generally like my fantasy to remain at least somewhat grounded and with a feel of structure, even if that structure isn't explicitly articulated (in part also because the line between "magic happens" and "deus ex machina" tends to be a thin one). But I can certainly see that other people seek other things in fantasy in particular and fiction in general (as evidenced by the many people worshipping at the altar of JRR Tolkien, whereas I'd hardly consider his books fit for burning), and are drawn to entirely different works and kinds of worlds instead. So for example a science of animancy arising may feel drab and clinical to some, whereas it seems entirely natural and interesting to me.
  17. But why would you assume that magic being inherently ineffable and inexplicable is such a defining feature of fantasy? That may well be your particular preference in fantasy fiction, but that doesn't make it a core quality of what makes something fantasy in a more general sense. The requirement that it be inexplicable all the way down is certainly too stringent a criterion, because that would make it essentially impossible to determine whether something qualifies as fantasy at all. The fact that no character in that fictional world can explain it doesn't mean it cannot be explained in context; even characters actively believing that something is inexplicable doesn't mean that it is. Similarly, the author of a work designating stuff as "just magic" doesn't seem like a particularly good criterion either. Firstly, because as a rule it's probably more because they can't be bothered and/or have no compelling reason to work out a fine-grained explanation for something (and probably wouldn't want to pin themselves down too much anyway), rather than them having actively decided that in context it is genuinely is inexplicable. But secondly and more fundamentally, it would mean that a work being fantasy cannot be determined from the work itself, which seems counterintuitive at best. It would also mean that something can retroactively stop (or start) being fantasy if the author changes his/her mind in a later connected work (or just in general, actually). So sure, there's certainly a lot of unexplained and seemingly inexplicable stuff going on in fantasy. It doesn't follow that explanations being provided or more generally it being indicated that it does follow some (albeit unknown) set of rules stops it being fantasy. And consequently I also don't see the issue with exploring atheism in a work of fiction, especially if you focus specifically on atheism as opposed to the type of fairly abstract, monotheistic-style God of our own major religions (rather than 'mere' powerful magical beings of a more mundane kind). And if nothing else, even the inherently inexplicable doesn't presuppose a God; and a God isn't inherently inexplicable (essentially, pinning the label 'God' on things and imputing some conscious intent is itself an (inadequate) attempt at rendering things explicable).
  18. Looking at the code I think that's intentional though. It doesn't get the Might healing percentage bonus either, at any rate (though obviously higher Might does indirectly boost the healing by increasing the damage dealt). Should the devs want to consider changing it though: it's the GainStaminaWhenHits ModifiedStat, which ends up in a call to the Health.AddStamina() function. Adding the bonuses should be a simple matter of just putting a call to the Health.AdjustHealing() function (like in the Health.ApplyStaminaChangeDirectly() function).
  19. Not entirely sure, but given the way the bug works I would expect that it doesn't initially but will do if the map the enemy is on was loaded previously in that save game; I don't know if it would happen in all cases either though, depends a bit on the area loading model (ie. whether future enemies for that map are loaded in one go or only with the map, etc.) Either way, it's not nearly as debilitating as the earlier stacking bug with deflection. That was a save/load issue that stacked every time, allowing the stats to get out of control badly upon repeated save/load in that map. This present bug is load-only, so even if and when it does affect an enemy it can't spiral out of control in that way. They'll be unusually strong, but not prohibitively so (and won't get even stronger if you reload). Finally, this will be fixed in the 3.04 update. Definitive release date is still pending, but should be in the reasonably near future (see also here: https://forums.obsidian.net/topic/88805-304-update-on-our-next-patch/?p=1843639)
  20. Yeah, Mourning Gloves and Swift Strikes are both active/model buffs, so only the best one counts. I have a detailed post on attack speed stacking here: https://forums.obsidian.net/topic/88795-trying-to-figure-out-casting-speed/?p=1837581. Mourning Gloves isn't in that list yet, though... *EDIT* it is now. And indeed, as you can see Gauntlets of Swift Action stacks with everything. Which isn't a particular property of the Gloves by the way, it's just that it's the only (non-weapon) item that gives a (continuous) attack speed bonus.
  21. I never checked into the details of their effect too far, but essentially higher Prestige helps attract attention to your Stronghold, basically it determines the chances of stuff happening. And also the kind of stuff, for example getting higher-level adventures requires having a high enough Prestige. Note that this goes both ways, higher Prestige also increases the odds of bad events and attacks happening. Higher Security basically offsets that, though again I'd have to check into it further to be able to say anything about the details.
  22. They generally are, yes. They tend to give bigger bonuses to Prestige and Security (and are tougher in a fight, when (manually) defending the stronghold), but cost more as well. Some of them also give a really big bonus to one stat (usually Security), but a penalty to the other, so there it kinda depends on which stat you want to boost more. For example, there's one that gives +6 Security but -6 Prestige; he's way too cool not to get though (gets posted right in front of the main keep too), although you do need to take the right path in a particular quest to get him.
  23. I'd consider Chill Fog as well. Not going to do much damage obviously but should get some nice Blindness going on for quite a while, and with the high Perception and Interrupting Blows you should get quite a few interrupts each pulse. Scrolls of Tanglefoot are nice for that as well though, I actually have been pondering an oddball interrupter druid layering two or three Tanglefoots for large area interrupting.
  24. You can recruit them through the Stronghold hireling menu, they get added to that list. They only show up standing/walking around the Stronghold if you've hired them.
×
×
  • Create New...