#gemrb@irc.freenode.net logs for 29 Jun 2020 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage

[01:49:55] --> DominusExult has joined #gemrb
[01:49:55] <-- DominusExult has left IRC (Changing host)
[01:49:55] --> DominusExult has joined #gemrb
[01:51:28] <-- Dominus has left IRC (Ping timeout: 265 seconds)
[01:51:28] --- DominusExult is now known as Dominus
[05:37:48] <-- Lightkey has left IRC (Ping timeout: 260 seconds)
[05:51:11] --> Lightkey has joined #gemrb
[06:05:13] --> lynxlynxlynx has joined #gemrb
[06:05:14] <-- lynxlynxlynx has left IRC (Changing host)
[06:05:14] --> lynxlynxlynx has joined #gemrb
[06:05:14] --- ChanServ gives channel operator status to lynxlynxlynx
[07:03:35] --> GeneralDuke has joined #gemrb
[11:22:55] <Not-944e> [gemrb] lynxlynxlynx pushed 2 commits to master [+0/-0/±10] https://git.io/JJvNU
[11:22:56] <Not-944e> [gemrb] chilvence aa9d02a - PST: Make sure the information panels pause the game This is based on expectaion of the original game, there isn't much of a reason to want time to pass while reading the journal/record sheet etc The map has been excluded, because being able to watch the party traverse the map is a positive change.
[11:22:58] <Not-944e> [gemrb] lynxlynxlynx ff9d24a - Merge pull request #851 from chilvence/pst-infopanels-pausegame PST: Make sure the information panels pause the game
[11:50:58] <GemRBDiscord> <WanderingQuill (lynx)> @Bubb perhaps I asked you already, but did you ever look into the morale stat? Besides the main opcode being gimped in bg2, it's still an open question what everything contributes to it, besides time slowly resetting it. So far we do it on big hp loss and allies dying, but those are both guesses
[14:29:43] <GemRBDiscord> <ThanatosZero> In regards to the tome of battle. If we ever need fluff, this article will help tremendously. http://archive.wizards.com/default.asp?x=dnd/frcc/20070911
[17:48:43] <-- GeneralDuke has left IRC (Quit: GeneralDuke)
[19:23:26] <GemRBDiscord> <Bubb> @WanderingQuill (lynx) Aside from the normal opcode, and the morale equalization system that restores it over time: 1) Opcode #130 (Bless): morale += Param1 2) Trigger 0x20 (HitBy) set: - "Drop by 2 when first falling below 50% HP, drop by another 2 when first falling below 25% HP. Don't decrease again unless I was healed above the respective tier and hit once before." if (m_hitPoints * 100 / max(1, m_nMaxHitPoints) <
[19:23:26] <GemRBDiscord> 50) { if (m_lastCheckedHitPoints * 100 / max(1, m_nMaxHitPoints) >= 50) m_morale = max(0, m_morale - 2) if (m_hitPoints * 100 / max(1, m_nMaxHitPoints) < 25) { if (m_lastCheckedHitPoints * 100 / max(1, m_nMaxHitPoints) >= 25) m_morale = max(0, m_morale - 2) } m_lastCheckedHitPoints = m_hitPoints } 2) Trigger 0x25 (Died) set: if (CAIObjectType::OfType() == true) // Exact
[19:23:26] <GemRBDiscord> object type match morale -= 1 else if (my.EA == PC && died.EA == PC) morale -= 1 else if (CAIObjectType::IsEnemyOf() == true) morale += 2 3) Trigger 0x4B (Killed) set: morale += 3 - "I killed anything" 4) INTOXMOD.2DA->MORALE 5) Action RunAwayFrom(), when calling CGameSprite::JumpThroughTransition() or CGameSprite::JumpToArea(): morale = 20 Note that if not explicitly stated, morale is bounded between [0-20].
[19:23:26] <GemRBDiscord> There are other misc. writes, mostly just resetting morale when the creature is invalid, such as when dying and so on.
[19:27:39] <GemRBDiscord> <WanderingQuill (lynx)> wow, you're a beast, thanks
[19:30:11] <GemRBDiscord> <WanderingQuill (lynx)> for bless, are you sure the morale is updated, not moralebreak?
[19:30:32] <GemRBDiscord> <Bubb> edx+CGameSprite.m_baseStats.m_morale aye, it's morale
[19:33:59] <GemRBDiscord> <Bubb> if (CAIObjectType::OfType() == true) // Exact object type match morale -= 1 This part is pretty interesting, since theoretically it means enemies can actually go morale failure if you kill enough of the same type. Can't remember if I actually ever ran into that while playing. Maybe against kobalds... iirc
[19:35:05] <GemRBDiscord> <WanderingQuill (lynx)> yeah, iwd2 is a good candidate
[19:35:33] <GemRBDiscord> <WanderingQuill (lynx)> it's also interesting how killed and died are additive
[19:36:08] <GemRBDiscord> <WanderingQuill (lynx)> i guess all three; maybe that's why they gimped the opcode in bg2
[19:42:49] <GemRBDiscord> <WanderingQuill (lynx)> What does OfType() actually check? Must be more than race
[19:44:12] <GemRBDiscord> <Bubb> it basically functions like an object selector in scripting, everything between the []
[19:44:17] <GemRBDiscord> <Bubb> matching type
[19:44:55] <GemRBDiscord> <Bubb> 0's are treated as "anything"
[19:45:22] <GemRBDiscord> <Bubb> though since it's checking against the live type of a creature, not sure if anything will be filled with 0
[19:46:40] <GemRBDiscord> <WanderingQuill (lynx)> pretty restrictive, even gender or class could make it not match
[19:47:41] <GemRBDiscord> <Bubb> Yeah, that's why I was thinking, it'd be rare for any group of creatures to affect their own morale, except for mob-like enemies, like kobolds and goblins
[19:49:14] <GemRBDiscord> <WanderingQuill (lynx)> cannon fodder morale 🙂
[20:03:40] <GemRBDiscord> <Bubb> If you have anything else to look into, I have time. 🙂 All of my tools make it pretty fast to look fields up, (for BG2, that is!)
[20:09:57] <GemRBDiscord> <WanderingQuill (lynx)> and we have the "research needed" tag 🙂 not all of that requires a deep look though, let me check
[20:12:37] <GemRBDiscord> <WanderingQuill (lynx)> https://github.com/gemrb/gemrb/issues/642
[20:14:48] <GemRBDiscord> <Bubb> Oh right, a lot of stuff to research then! I'm on it. And btw, I just noticed I listed the wrong ID for the Died() trigger, (I wrote 0x25, Die()'s trigger, when I meant 0x4A, the one for Died()
[20:15:21] --> FutureSuture has joined #gemrb
[20:16:15] <GemRBDiscord> <WanderingQuill (lynx)> doesn't matter, we don't reference stuff by hex values 🙂
[20:16:39] <GemRBDiscord> <WanderingQuill (lynx)> here's another action one, probably a bit trickier, since it could be in shared code: https://github.com/gemrb/gemrb/issues/549
[20:23:15] <GemRBDiscord> <WanderingQuill (lynx)> that's it, the rest are mostly iwd2, pst, for ourselves or some really highlevel or annoying stuff (like deva blending)
[20:29:42] <GemRBDiscord> <Bubb> Well, CallLightning() is just an instant death with Param2 = 0x100 The EE uses a custom render routine, looks like it's supposed to be a collection of randomish lines, but it's broken? Nothing appears for me graphically when I call the action. Regarding MoveToObject, you mean interruptible as in other script actions can override it while it is running, right?
[20:44:41] <GemRBDiscord> <WanderingQuill (lynx)> yes
[21:05:13] <GemRBDiscord> <Bubb> MoveToObject() appears to allow being interrupted, at least when called on its own MoveToObjectNoInterrupt() is required to prevent interrupts, (this calls the same code, just with a flag switch on) Note that many actions call MoveToObject() as a sub-action - the higher action can, (and sometimes does), override the ability to interrupt
[21:19:15] <GemRBDiscord> <WanderingQuill (lynx)> ok, so it's consistent — that's good
[21:20:25] <GemRBDiscord> <WanderingQuill (lynx)> i think kivan used it directly, but i'll recheck; perhaps it's a red herring
[21:25:23] <GemRBDiscord> <WanderingQuill (lynx)> yeah nah: ActionOverride("p#kivan",MoveToObject(Player1)) so something else is keeping the execution in the first block: http://paste.debian.net/1154417/
[21:26:44] <GemRBDiscord> <WanderingQuill (lynx)> basically kivan.cre starts unhealed in the old version, so the second block is immediately true; we get there fast, since the first block has blocking actions, iow script processing continues
[21:27:08] <GemRBDiscord> <WanderingQuill (lynx)> maybe interruptability is the wrong concept here
[21:27:16] <GemRBDiscord> <WanderingQuill (lynx)> or maybe i'm missing something obvious
[21:27:51] <GemRBDiscord> <WanderingQuill (lynx)> it's clear from the other reports from the original that it usually managed to stay in the first block just fine
[21:33:19] <GemRBDiscord> <Bubb> Is that paste from Kivan's script? Why is he ActionOverriding'ing himself? (or is it an area/global script?)
[21:34:40] <GemRBDiscord> <WanderingQuill (lynx)> it's his and yes, looks redundant
[21:35:05] <GemRBDiscord> <Bubb> Might be some peculiarity from ActionOverride then, it goes through a whole separate processing chain
[21:35:06] <GemRBDiscord> <WanderingQuill (lynx)> perhaps he has some idling stuff coded and this prevents contamination
[21:35:51] <GemRBDiscord> <WanderingQuill (lynx)> yeah, the CurrentActionInterruptable that's mentioned in the report was added specifically so overriden actions can last longer — normal uninterruptability was too severe
[21:36:21] <GemRBDiscord> <WanderingQuill (lynx)> time to try this without the override
[21:39:03] <GemRBDiscord> <WanderingQuill (lynx)> thanks though
[22:31:43] <-- lynxlynxlynx has left IRC (Ping timeout: 264 seconds)
[22:32:59] <-- FutureSuture has left IRC (Ping timeout: 246 seconds)