FfH2 0.32 Bug Thread

The mod is all converted to 3.17. Im going to be releasing it as a patch for 0.32, but I have some cleanup to do for some of the new stuff I added before the patch.

I can verify that the options stay and that the unit graphics are correct in the unit pane. Alex did a great job on patch 3.17. Expect to see the new FfH patch out tomorrow.
 
Not sure if this has been reported, but the Guardian of Pristinus Pass seems to not be spawning. Even with UF spawn chance set to 100% on a map with lots of peaks, it doesn't show up.
 
Patch "g": (unreleased)
1. Fixed an issues that would cause spells with any miscast chance to always miscast.
Finally. Working on miscast effects should be fun. Any idea how I might go about adding a new river? Sometimes spring should turn up more water than expected.
2. Fixed an issue that would cause equipment to dissapear if it is owned by a player that leaves the game.
How does this work? Do you make the equipment units barb?

3. Added the Wonder spell (Chaos 3, does 3-5 random effects).
Does it do 3-5 effects out of a larger number of possibilities, or are they 3-5 possible effects for this too choose one from? 3-5 possibilities doesn't seem random enough to me. I'll probably add about 50 in my version (if I can think of enough. That might be slight hyperbole.)

4. Removed the Enervated promotion (effect combined with the withered promotion).
5. Removed the Enervation spell (Wither spell does a combo effect of the two).
12. The Withered promotion gives -10% combat,-50% xp and is dispellable in addition to its other effects.
14. Wither spell is now Entropy 3 and does everything the old Enervation and Withered spell used to do plus an additional -10% strength.
I'd personally prefer if it were still called Enervation/Enervated. That just sounds cooler. I also still like my idea of making it remove courage (and maybe valor, loyalty, morale, etc), since that makes having more spirit casters more important.

6. Removed the Law Bringer unit.
I forgot this was still around after the spell was removed. Just wondering, how/where were they blocked from attacking good civs? Is that capacity still present, or was it not deemed worthy of including in BtS FfH? The ability to block attacks like that that could be very useful in my modmod...



11. Rust spell moved from Entropy 2 to Entropy 1.
I still don't really consider this to fit that well in Entropy...oh well.

15. Valor promotion never wears off and it grants +10% magic resistance.
16. Valor spell changed form a rank 2 Law spell to a rank 3 Law spell.

That seems really weak to me for a level 3 spell. I was actually thinking that Valor would be better for level one. (I'm not a fan of Loyalty, and was thinking of combining them.) A +10% boost isn't that significant. Now, maybe if this promotion gave more than +1 free xp per battle, maybe reduced the xp requirements for gaining levels, game immunity to fear, and a combat boost vs Fear, then it would be worth using as a level 3 (or at least 2) spell.


9. Summon Pit Beast moved from a Chaos3 spell to an Entropy 2 spell.
10. Pit Beasts moves reduced from 2 to 1 and strength reduced from 10 to 5.
17. Summon Hosts of the Einherjar spell changed from a rank 3 Law spell to a rank 2 Law spell.
18. Charm Person spell moved to a rank 2 mind spell and resistance lowered from +40% to +20%.
19. Inspiration spell moved to a rank 1 mind spell and research bonus lowered from +4 to +2 and it now gives +1 sage GPP.
These are all fine with me


20. Hope spell now gives courage for free to all units that pass through the city (so the caster doesn't have to cast it).
Has the Courage spell been replaced with something else? If not, you just seriously nerfed spirit 1. I sure hope you'll consider adding some other spell to make up for this. Perhaps as a second spell, so you could still get the promotion while in the field far from your cities. (I also think that courage should really wear off eventually, and I don;t see the point of it healing)



23. Religous units that abandon you will now be re-buildable by other empires with that state religion.
24. Infernals get all their free buildigns (demonic citizens, elder council, training yard, obsidion gate, forge, mage guild) in citys they capture.
Both excellent.

Religious heroes that are killed can't be build again though, right? I was also thinking that it might be good to make/let units abandon based on alignment too. Better yet, set up separate abandonment tags for each possible abandonment condition. And maybe also allow certain exceptions, so Arthendain might be ok with either RoK or FoL, and...maybe I'm getting going a little to far.



25. Ressurection no longer requires or consumes a life mana node.
I still think that Life III could use a second spell, so it will be useful to the Grigori. Letting resurrection kill undead units (preferable converint them to living unis under your control) could be cool too. (I also think that Destroy undead really needs to destroy the undead, or at least have no damage cap.)

26. New Wizard model by seZereth (Govannon now uses the old wizard art).
27. New Amurite Archmage model by seZereth.
28. New water art by seZereth.
29. New Dwarven cannon model by AA.
When do we get to see this new art?

30. Made the following unit attributes into ints so multiple promotions can grant the effects (for modmods): alive, boarding, doublefortifybonus, fear, flying, hiddennationality, ignorebuildingdefense, immortal, immunetocapture, immunetofear, immunetomagic, onlydefensive, targetweakestunit, targetweakestunitcount, twincast and waterwalking.

Is this meant aimed at stopping the problem where losing gaining and then loosing a second promo with the same effect makes the unit lose the ability? That's good. Could the integer change in Twincast and double fortify bonus also be made so that the abilities stack? Doubling both every time might be a bit much, but two twincast promos could man you get 3 summons instead of 2 maybe?

I also still think that Twincast needs to have some effect on non-summoning (at least direct damage) spells. And that spell extension should boost the range of these spells too.

31. Converted to BtS 3.17 (fixed racial models in the unitpane, game options now default to the last way you had them set, and other issues).
Well, its about time Firaxis fixed these.



I still really think that summon Chaos Marauder should be brought back instead of Mutate, and that the body sphere needs something that better fits the theme of hatred, blood and murder.


Feel free to take a few more days to get everything just right. I came home for the weekend , so I won't be able to download it until Sunday afternoon anyway (stuck with dial-up).
 
Concerning patch g... I don't see the withdrawal bug in the list. Is it going to be included?

Can't see it either, time for a friendly bump. :)

OK, I found what's causing the withdrawal bug.

Look at the lines in bold (from CvUnit.cpp):

Spoiler :
Code:
            if (pDefender->isFleeImmortal())
            {
                pDefender->joinGroup(NULL);
                pDefender->setFleeImmortal(false);
                pDefender->doImmortalRebirth();
                changeMoves(std::max(GC.getMOVE_DENOMINATOR(), pPlot->movementCost(this, plot())));
                [B]getGroup()->groupMove(pPlot, true, ((canAdvance(pPlot, 0)) ? this : NULL));[/B]
                getGroup()->clearMissionQueue();
            }
            if (pDefender->isFleeWithdrawl())
            {
                pDefender->joinGroup(NULL);
                pDefender->setFleeWithdrawl(false);
                pDefender->jumpToNearestValidPlot();
                changeMoves(std::max(GC.getMOVE_DENOMINATOR(), pPlot->movementCost(this, plot())));
                [B]getGroup()->groupMove(pPlot, true, ((canAdvance(pPlot, 0)) ? this : NULL));[/B]
                getGroup()->clearMissionQueue();
                szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_UNIT_FLED", pDefender->getNameKey(), getNameKey());
                gDLL->getInterfaceIFace()->addMessage(pDefender->getOwnerINLINE(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_OUR_WITHDRAWL", MESSAGE_TYPE_INFO, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_GREEN"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
                szBuffer = gDLL->getText("TXT_KEY_MISC_ENEMY_UNIT_FLED", pDefender->getNameKey(), getNameKey());
                gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_THEIR_WITHDRAWL", MESSAGE_TYPE_INFO, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
            }
The move order for the winning unit should only be given if there are no more defending units on the plot (even if the third argument of groupMove is NULL, the attacking stack will sometimes push the defending one away). Here's the fixed code:

Spoiler :
Code:
            if (pDefender->isFleeImmortal())
            {
                pDefender->joinGroup(NULL);
                pDefender->setFleeImmortal(false);
                pDefender->doImmortalRebirth();
                changeMoves(std::max(GC.getMOVE_DENOMINATOR(), pPlot->movementCost(this, plot())));
                [B]if (pPlot->getNumVisibleEnemyDefenders(this) == 0)[/B]
                [B]{[/B]
                    [B]getGroup()->groupMove(pPlot, true, ((canAdvance(pPlot, 0)) ? this : NULL));[/B]
                [B]}[/B]
                getGroup()->clearMissionQueue();
            }
            if (pDefender->isFleeWithdrawl())
            {
                pDefender->joinGroup(NULL);
                pDefender->setFleeWithdrawl(false);
                pDefender->jumpToNearestValidPlot();
                changeMoves(std::max(GC.getMOVE_DENOMINATOR(), pPlot->movementCost(this, plot())));
                [B]if (pPlot->getNumVisibleEnemyDefenders(this) == 0)[/B]
                [B]{[/B]
                    [B]getGroup()->groupMove(pPlot, true, ((canAdvance(pPlot, 0)) ? this : NULL));[/B]
                [B]}[/B]
                getGroup()->clearMissionQueue();
                szBuffer = gDLL->getText("TXT_KEY_MISC_YOU_UNIT_FLED", pDefender->getNameKey(), getNameKey());
                gDLL->getInterfaceIFace()->addMessage(pDefender->getOwnerINLINE(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_OUR_WITHDRAWL", MESSAGE_TYPE_INFO, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_GREEN"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
                szBuffer = gDLL->getText("TXT_KEY_MISC_ENEMY_UNIT_FLED", pDefender->getNameKey(), getNameKey());
                gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_THEIR_WITHDRAWL", MESSAGE_TYPE_INFO, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
            }
 
Ran into a Python error.

Playing Basium, Terra, Noble -- current version. Patch 3.13.

Spoiler :
Code:
Traceback (most recent call last):

  File "CvSpellInterface", line 16, in cast

  File "<string>", line 0, in ?

  File "CvSpellInterface", line 1073, in spellInquisition

AttributeError: 'NoneType' object has no attribute 'getStateReligion'
ERR: Python function cast failed, module CvSpellInterface

Did not cause a crash.
.
 

Attachments

Not sure if this has been reported, but the Guardian of Pristinus Pass seems to not be spawning. Even with UF spawn chance set to 100% on a map with lots of peaks, it doesn't show up.

I think it's intended because Kael had said that the feature was for something that didn't make it in time for version .32.

It's still placeable using WB though.
 
Can't see it either, time for a friendly bump. :)

I looked through that last night, and from what I can tell all it does is keep defensive units from withdrawling if there are other units in their plot. Which isnt what the withdrawl bug is (as far as I know).

The withdrawl bug has 2 issues:

1. The entire stack withdrawls (this is the biggest problem with it, though I cant understand why its occuring since I do the group split before it occurs).

2. The unit withdrawls huge distances away (this is a jump problem, but isnt as critical to me as the first part).

Your code change keeps the unit from withdrawling at all if there are allied units in its plot. That should introduce a new issue where 2 100% withdrawl units in the same plot are unmoveable (and make an unbeatable defense for a city). And doesn't really address either of the two above except that it will make withdrawl less common (since most of the time they will stay in their plot).

Let me know if Im misinterpeting, and I still need a save of this issue occuring if Im going to fix it.
 
I think there is a misunderstanding about which unit(s) the code applies to.

The updateCombat and resolveCombat functions are always called by the attacking unit. This means that getGroup()->groupMove is not the withdrawal command for the defending unit, but the move command for the attacking one (pDefender->jumpToNearestValidPlot() and pDefender->doImmortalRebirth(), which make the defending unit withdraw, remain unchanged).

The code that actually moves the defending stack is not in the combat functions, but in CvUnit::setXY. If for some reason, a unit is ordered to move on a plot with enemy units on it (and if they cannot coexist), jumpToNearestValidPlot is called for these units.

Save games can be found here.

Concerning your bug #2 (the plot a unit withdraws to), you'd have to modify CvUnit::jumpToNearestValidPlot, since that is the function that selects the new plot.
 
I think there is a misunderstanding about which unit(s) the code applies to.

The updateCombat and resolveCombat functions are always called by the attacking unit. This means that getGroup()->groupMove is not the withdrawal command for the defending unit, but the move command for the attacking one (pDefender->jumpToNearestValidPlot() and pDefender->doImmortalRebirth(), which make the defending unit withdraw, remain unchanged).

The code that actually moves the defending stack is not in the combat functions, but in CvUnit::setXY. If for some reason, a unit is ordered to move on a plot with enemy units on it (and if they cannot coexist), jumpToNearestValidPlot is called for this unit.

Save games can be found here.

Concerning your bug #2 (the plot a unit withdraws to), you'd have to modify CvUnit::jumpToNearestValidPlot, since that is the function that selects the plot the unit withdraws to.

Got it, thanks for the explanation, I'll get it added.
 
Just wondering when we will see the new unit art and the water art? unless you're going to be releasing it today. I'm not trying to rush you or anything.
 
Just wondering when we will see the new unit art and the water art? unless you're going to be releasing it today. I'm not trying to rush you or anything.

Everything in that first post (patch "g") is coming out today.
 
Removed Law Bringer... did you adjust Graveyards? I seem to recall them being able to produce a Law Bringer.

Could you also adjust the new building attributes (SeeInvisible and HideUnits) INT values?

RE: Magister: Making them INT values only fixes the removal of the ability with loss of a second promotion that has the same ability. It doesn't make effects stack.

Pity that you were so quick, I don't know if I'll be able to update the manual for a couple days ;) (Nice work though, and some pleasant changes)
 
I'm playing as the good elves (forgive my inability to spell their name), and my mage seems to have the model for the Svaltar.
 
huh, I know that a new unit art for the Ljosalfar mage (or was it archmage?) (the good elves) came out a while ago, maybe it somehow got turned off?

I'll start a quick game as the Ljosalfar and see what's up.

edit: things seem to be just fine for me, could you put up a savegame?

Oh yea, shouldn't two teamed civs get an AI Elohim to trigger thier worldspell? I've heard that the AI needs a requirement for bieng at war with two or more civs to trigger sanctuary. In my game, Perpentach/Minister Koun declared war on Ethine, wouldn't the perpentach/koun team count as two separate civs teamed together?
 
edit: things seem to be just fine for me, could you put up a savegame?

Certainly. I remember seeing a preview for the new art; it was a cool looking guy with an antler hat (or was it a staff?). What I'm seeing in my game is a gray skinned woman in skimpy clothes.
 
Semi-Glitch, WaD but sounds very unthematic.

Level 15 HN Units entering the Ring of Carcer kill off Brigit for good (since she really is immortal that makes not much sense).
Can be "player-hotfixed" by declaring nat. before entering. But that is quite a price at Level 15 (War Elephant in my example.)
HN are not supposed to capture units which is why it is WaD. But perhaps the Ring of Carcer-mechanics should be changed to create a brigit (like Baby Spiders and Slaves are created) instead of using the capturing-code? Then it whould be possible to get Brigit with an HN-Unit as well which at least i find desireable.
 
Certainly. I remember seeing a preview for the new art; it was a cool looking guy with an antler hat (or was it a staff?). What I'm seeing in my game is a gray skinned woman in skimpy clothes.

It was a staff.

Anyways, I'm seeimg it too in your savegame, it even has the unit icon for Svartalfar. It's pretty wierd.
 
Back
Top Bottom