Why do 'DestroyItem()' and Opcode #112 (Remove item) fail to remove opcode #66 (Translucency - timing = 2) from an ITM? Is there a particular reason?
While I don't know exactly what the problem is, I do know Translucency is one of the stats in a CRE file. Perhaps the effect you used is permanently changing it.
Opcode #66 is one of the opcodes that uses a secondary Persistent Effect mechanism to achieve the fade in / fade out modes. I could see how if you are using one of those modes it might be impossible to remove by conventional means.
And, confirming OlvynChuru's suspicion, Timing mode = Instant/Permanent until death (1) will alter the base stat of the creature, so watch out for that.
And, confirming OlvynChuru's suspicion, Timing mode = Instant/Permanent until death (1) will alter the base stat of the creature, so watch out for that.
Yes, sure, but in my case 'timing' is set to 2 (Instant/While equipped) not 1.... As a result, op#112 managed to remove it at last (the issue was caused by something else....)
Separately, speaking of opcode #331: how is 'caster level' (special = 2) related to the entries in the 2DA file? Suppose I'm a level 17 sorcerer and my 2DA file has 9 entries: will I summon 17 creatures randomly chosen from the 9 listed in my 2DA?
And, confirming OlvynChuru's suspicion, Timing mode = Instant/Permanent until death (1) will alter the base stat of the creature, so watch out for that.
Yes, sure, but in my case 'timing' is set to 2 (Instant/While equipped) not 1.... As a result, op#112 managed to remove it at last (the issue was caused by something else....)
Separately, speaking of opcode #331: how is 'caster level' (special = 2) related to the entries in the 2DA file? Suppose I'm a level 17 sorcerer and my 2DA file has 9 entries: will I summon 17 creatures randomly chosen from the 9 listed in my 2DA (provided the summoning cap allows me to summon 17 creatures of course...)?
Separately, speaking of opcode #331: how is 'caster level' (special = 2) related to the entries in the 2DA file? Suppose I'm a level 17 sorcerer and my 2DA file has 9 entries: will I summon 17 creatures randomly chosen from the 9 listed in my 2DA (provided the summoning cap allows me to summon 17 creatures of course...)?
It will summon creatures until their combined power level exceeds caster level.
For op331 (in Spell/Item):
Special=0: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=1: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=2: Summon until power level equals/exceeds "Caster Level"
For op331(in EFF):
Special=0: Summon until power level equals/exceeds Param1
Special=1: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=2: Summon until power level equals/exceeds "Caster Level" field of EFF
For op127 (in Spell/Item):
Special=0: Summon until power level equals/exceeds Param1
Special=1: Summon amount equal to Param1
Special=2: Summon until power level equals/exceeds "Caster Level"
For op127 (in EFF):
Special=0: Summon until power level equals/exceeds Param1
Special=1: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=2: Summon until power level equals/exceeds "Caster Level" field of EFF
OK, WeiDU question:
If I want to delete unused resources from the override folder (because I replaced them with my own, so they are no longer needed), is DELETE enough? Or should I also add DISABLE_FROM_KEY?
EDIT: unless I'm missing something, DISABLE_FROM_KEY is necessary only if the resource under consideration is part of the base game (i.e., it's not added by mods). Is that correct?
OK, WeiDU question:
If I want to delete unused resources from the override folder (because I replaced them with my own, so they are no longer needed), is DELETE enough? Or should I also add DISABLE_FROM_KEY?
Why would you need to do this?
- If you've overwritten a resource, it's already gone
- If you've redirected something to a new resource, the old one is harmless.
Imagine that I'd like to replace creatures in monster summoning tables introduced by some other mod (e.g., Iwdification). So, I CREATE my own resources and edit the 2DA entries of those tables.... So yes, the old CREs are harmless but also unused, so I was thinking of removing them....
In any case, yes, DELETE will make a copy of its target if you don't say anything (i.e., if you don't specify 'OptNoBackup'....)
EDIT - of course, if deleting things, I would make very sure that there aren't other resources that reference the files you want to delete... That can be tricky. What if snother mod comes along, sees that IWDification is installed, and then operates on the assumption that its resources are present?
Yes, you're right, it can be tricky (even though this should not be the case).... But at the same time I don't like having unused resources in my override... Will think about it....
Keep in mind that if the ITM under consideration is already flagged as 'Headgear' (offset 0x1c), then don't set that flag to 1 or you'll remove crit immunity...
Does anyone know if there is a code action that deselects a character?
I'm running into a problem because my NPC joins the party while dead and is automatically selected then. But if you try to move while she's selected, the game crashes.
Hitting the 'select all' button unselects her since she's dead, but I'd like to do it automatically if possible.
Does anyone know if there is a code action that deselects a character?
I'm running into a problem because my NPC joins the party while dead and is automatically selected then. But if you try to move while she's selected, the game crashes.
Hitting the 'select all' button unselects her since she's dead, but I'd like to do it automatically if possible.
None of them I tested worked with a selected Dead character.
However, you can try APPEND:
Does anyone know if there is a code action that deselects a character?
I'm running into a problem because my NPC joins the party while dead and is automatically selected then. But if you try to move while she's selected, the game crashes.
Hitting the 'select all' button unselects her since she's dead, but I'd like to do it automatically if possible.
None of them I tested worked with a selected Dead character.
However, you can try APPEND:
@Ratatoskr: I've found that MoveGlobalObject() and MoveGlobalObjectOffscreen() will force the engine to unselect the dead party member if it targets an active creature.
The following should work, replacing "Korgan" with your NPC's script name:
And while I'm asking questions, does anyone know what causes the "unterminated comment" installation error on weidu? I can't seem to track the issue down.
And while I'm asking questions, does anyone know what causes the "unterminated comment" installation error on weidu? I can't seem to track the issue down.
Probably a / from a // or either a /* or */ is missing.
@Bubb This still doesn't seem to be working for me. But I'll keep fiddling with it. It might be a problem with my save. Or maybe I need another actionoverride..
@Raduziel Thanks. That helped. I hadn't realized my weidu highlighting was misleading me when I'd dummied out se code, but adding //to every line fixed the issue
Question from a complete amateur - If I want to make a spell mod using pre-existing files in the game, do I need to do anything specific to make them compatible with mods like SCS, TnB and SR?
If I install these mods first and then make my own files, is that the easiest way of ensuring compatibility?
Can anyone look over the scripts below and help me figure out how to make them work as they don't do anything right now?
This is appended to dplayer2.bcs:
IF
ActuallyInCombat()
Global("fight2","GLOBAL",0)
THEN
RESPONSE #100
SetGlobal("fight2","GLOBAL",1)
END
IF
!ActuallyInCombat()
Global("fight2","GLOBAL",1)
THEN
RESPONSE #100
SetGlobal("fight2","GLOBAL",0)
END
This is appended to dplayer3.bcs:
IF
ActuallyInCombat()
Global("fight1","GLOBAL",0)
THEN
RESPONSE #100
SetGlobal("fight1","GLOBAL",1)
END
IF
!ActuallyInCombat()
Global("fight1","GLOBAL",1)
THEN
RESPONSE #100
SetGlobal("fight1","GLOBAL",0)
END
This is appended to baldur.bcs and baldur25.bcs
IF
OR(2)
Global("fight1","GLOBAL",1)
Global("fight2","GLOBAL",1)
THEN
RESPONSE #100
SetGlobal("fight","GLOBAL",1)
END
IF
Global("fight","GLOBAL",1)
!GlobalTimerNotExpired("TBC","GLOBAL")
THEN
RESPONSE #100
PauseGame()
SetGlobalTimer("TBC","GLOBAL",3)
END
IF
Global("fight1","GLOBAL",0)
Global("fight2","GLOBAL",0)
THEN
RESPONSE #100
SetGlobal("fight","GLOBAL",0)
END
Basically, I'm trying to make the game pause in combat every half round. First I tried just the timer/pause block appended to dplayer2 and dplayer3 and that worked, but it would cancel the queued action of whichever character triggered the pause, which is extremely annoying.
So I figured I'd get around that by just using the character scripts to set globals once at start and end of combat and trigger the pause globally via baldur/baldur25, but this way it doesn't pause at all. I've been fiddling with this for a while and as much as I stare at it, I don't see a reason why it shouldn't work. Any ideas?
And if it's a dead end, any tips on how to achieve the desired effect without the annoying side effect of queued actions being cancelled?
@Allbrother: I've just had a look inside the PauseGame() assembly. In order to pause the game it invokes the auto-pause mechanism, and since the auto-pause mechanism was only designed to work with creatures in the game world, it ignores any attempts to pause the game from a non-sprite script.
Running PauseGame() from a game script / area script simply won't work, sadly.
Perhaps summoning an invisible sprite to perform the action for the player would work, though the delay involved might ruin what you are trying to do.
Comments
While I don't know exactly what the problem is, I do know Translucency is one of the stats in a CRE file. Perhaps the effect you used is permanently changing it.
And, confirming OlvynChuru's suspicion, Timing mode = Instant/Permanent until death (1) will alter the base stat of the creature, so watch out for that.
@OlvynChuru
Yes, sure, but in my case 'timing' is set to 2 (Instant/While equipped) not 1.... As a result, op#112 managed to remove it at last (the issue was caused by something else....)
Separately, speaking of opcode #331: how is 'caster level' (special = 2) related to the entries in the 2DA file? Suppose I'm a level 17 sorcerer and my 2DA file has 9 entries: will I summon 17 creatures randomly chosen from the 9 listed in my 2DA?
@OlvynChuru
Yes, sure, but in my case 'timing' is set to 2 (Instant/While equipped) not 1.... As a result, op#112 managed to remove it at last (the issue was caused by something else....)
Separately, speaking of opcode #331: how is 'caster level' (special = 2) related to the entries in the 2DA file? Suppose I'm a level 17 sorcerer and my 2DA file has 9 entries: will I summon 17 creatures randomly chosen from the 9 listed in my 2DA (provided the summoning cap allows me to summon 17 creatures of course...)?
For op331 (in Spell/Item):
Special=0: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=1: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=2: Summon until power level equals/exceeds "Caster Level"
For op331(in EFF):
Special=0: Summon until power level equals/exceeds Param1
Special=1: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=2: Summon until power level equals/exceeds "Caster Level" field of EFF
For op127 (in Spell/Item):
Special=0: Summon until power level equals/exceeds Param1
Special=1: Summon amount equal to Param1
Special=2: Summon until power level equals/exceeds "Caster Level"
For op127 (in EFF):
Special=0: Summon until power level equals/exceeds Param1
Special=1: Summon amount equal to (Param1 + DiceNum(d)DiceSize))
Special=2: Summon until power level equals/exceeds "Caster Level" field of EFF
I see. So, when 'special' is 2, this effect is more powerful when used by enemies, isn't it? I mean, they're not subjected to the summoning cap....
Also, the creatures are chosen at random regardless the value of 'special', right?
For NPC-classes, it's even more powerful, since they use their innate level for wizard/priest spells, not level 1, as a UAI thief would.
If I want to delete unused resources from the override folder (because I replaced them with my own, so they are no longer needed), is DELETE enough? Or should I also add DISABLE_FROM_KEY?
EDIT: unless I'm missing something, DISABLE_FROM_KEY is necessary only if the resource under consideration is part of the base game (i.e., it's not added by mods). Is that correct?
Imagine that I'd like to replace creatures in monster summoning tables introduced by some other mod (e.g., Iwdification). So, I CREATE my own resources and edit the 2DA entries of those tables.... So yes, the old CREs are harmless but also unused, so I was thinking of removing them....
In any case, yes, DELETE will make a copy of its target if you don't say anything (i.e., if you don't specify 'OptNoBackup'....)
Yes, you're right, it can be tricky (even though this should not be the case).... But at the same time I don't like having unused resources in my override... Will think about it....
Keep in mind that if the ITM under consideration is already flagged as 'Headgear' (offset 0x1c), then don't set that flag to 1 or you'll remove crit immunity...
Didn't see Luke93's post. I guess that's why it's not checked off for helms in the base game.
I'm running into a problem because my NPC joins the party while dead and is automatically selected then. But if you try to move while she's selected, the game crashes.
Hitting the 'select all' button unselects her since she's dead, but I'd like to do it automatically if possible.
However, you can try APPEND: to "ACTSLEEP.IDS" to prevent the crashing, but I don't know if it will have any adverse effects.
Thanks for trying. I'm wary of appending without knowing what might happen so I may just have to make a known bugs section.
At least it's a fairly easy fix on the player's end of things. All they have to do is hit one button.
The following should work, replacing "Korgan" with your NPC's script name:
Edit: Any suggestions on where I put this code? I've tried all the script files that make sense to me and it doesn't seem to be working.
As soon as she joins, she's both dead and selected and that doesn't seem to be going away.
Probably a / from a // or either a /* or */ is missing.
@Raduziel Thanks. That helped. I hadn't realized my weidu highlighting was misleading me when I'd dummied out se code, but adding //to every line fixed the issue
Question from a complete amateur - If I want to make a spell mod using pre-existing files in the game, do I need to do anything specific to make them compatible with mods like SCS, TnB and SR?
If I install these mods first and then make my own files, is that the easiest way of ensuring compatibility?
Cheers
This is appended to dplayer2.bcs:
This is appended to dplayer3.bcs:
This is appended to baldur.bcs and baldur25.bcs
Basically, I'm trying to make the game pause in combat every half round. First I tried just the timer/pause block appended to dplayer2 and dplayer3 and that worked, but it would cancel the queued action of whichever character triggered the pause, which is extremely annoying.
So I figured I'd get around that by just using the character scripts to set globals once at start and end of combat and trigger the pause globally via baldur/baldur25, but this way it doesn't pause at all. I've been fiddling with this for a while and as much as I stare at it, I don't see a reason why it shouldn't work. Any ideas?
And if it's a dead end, any tips on how to achieve the desired effect without the annoying side effect of queued actions being cancelled?
Running PauseGame() from a game script / area script simply won't work, sadly.
Perhaps summoning an invisible sprite to perform the action for the player would work, though the delay involved might ruin what you are trying to do.