Skip to content

Elemental summons do not work AT ALL

I am using the latest version of the game and all the Summon Elemental spells don't work. Fire, air, earth all don't work at all. They are green under my control but they will not move or attack.
I've done a clean install, etc, it's just completely broken.
The creature scripts are fucked broken.

Comments

  • jmerryjmerry Member Posts: 3,882
    Checking ... all of those summons have the BDSUM00 script. They should attack the nearest enemy if you don't direct them, and be fully controllable otherwise. Once the struggle is over and you actually have control, anyway.

    At least, they should if party AI is enabled. That script is in the "default script" slot, which has pretty low priority, and disabling party AI might deactivate that for everyone you control.
  • sarevok57sarevok57 Member Posts: 6,002
    i've noticed with the newest patch, their behaviour is a bit weird

    what should happen ( for arcane users );
    for 3 rounds your wizerd should be having a mental battle with the said elemental for 3 rounds, while this is happening the elemental looks towards the caster and cannot be controlled until after 3 rounds have passed while the caster has the weird looking animation over their head

    although if control fails, then the elemental goes hostile and attacks the caster

    what actually happens ( for arcane casters );
    the caster thing doesnt change but during the 3 rounds that the elemental is supposed to be "battling" with the caster, it is actually controllable right away ( at least in terms of being able to move ) but i believe if you try and do anything other than move it fails until the 3 "mental combat rounds" are finished

    this is definitely not intended behavior and could be whats messing up the elementals

    so just remember, if you are an arcane caster, wait until the mage's "mental battle" animation is done before making your elemental do anything
  • jmerryjmerry Member Posts: 3,882
    edited December 2022
    Right, looking into the mechanics some more...

    The mage elemental summon spells have the following effects:
    - Summon the elemental.
    - "Pause" the caster, preventing them from taking actions for three rounds.
    - Play a visual effect over the caster for three rounds.
    - Give the caster a portrait icon for three rounds.

    The "mental battle" is entirely in the creature's override script, WIZELSUM. When the spell is cast by a PC, that script puts the elemental on the player's team, applies the THREE_ROUND_ENCHANTMENT_IMMUNITY spell to it, waits 17 seconds, and then either makes the elemental an enemy or lets the player keep control.
    What does THREE_ROUND_ENCHANTMENT_IMMUNITY do? It gives the creature immunity to lots of stuff, but doesn't apply any disabling effects.

    Checking 2.5 ... the main spell and the key script block are the same. So is THREE_ROUND_ENCHANTMENT_IMMUNITY. I don't see any reason you couldn't just tell the elemental to do stuff during the battle back then? And testing it ... you can order the elemental around during the mental battle in 2.5.

    Somehow, my first test in 2.5 seemed to allow smooth control of the elementals. All subsequent tests in both 2.5 and 2.6 have the elementals stopping every second or so to turn and face the summoner, even after the battle is done. The only block in either of the creature's scripts that could possibly cause that behavior is the battle for control itself in WIZELSUM:
    IF
    	Global("Elementalcontrol","LOCALS",0)
    THEN
    	RESPONSE #15
    		ChangeEnemyAlly(Myself,ALLY)
    		FaceObject(LastSummonerOf(Myself))
    		ApplySpell(Myself,THREE_ROUND_ENCHANTMENT_IMMUNITY)  // SPIN906.SPL (No such index)
    		Wait(17)
    		PlaySound("EFF_M72D")
    		Enemy()
    		SetGlobal("Elementalcontrol","LOCALS",2)
    	RESPONSE #85
    		ChangeEnemyAlly(Myself,ALLY)
    		FaceObject(LastSummonerOf(Myself))
    		ApplySpell(Myself,THREE_ROUND_ENCHANTMENT_IMMUNITY)  // SPIN906.SPL (No such index)
    		Wait(17)
    		PlaySound("EFF_M72C")
    		Ally()
    		SetGlobal("Elementalcontrol","LOCALS",1)
    END
    

    ...

    Wait. That's it. Acting during a Wait() command can cause script blocks to be only partially executed. If you tell the elemental to do something while that script block is in progress, the block breaks. The commands after that Wait() aren't executed, and the elemental goes to follow your command ... until the next time WIZELSUM runs, and the block starts again.

    Yes, this is broken. It's broken that you can issue commands to the elemental during the battle for control, and issuing those commands further breaks the script and essentially restarts the battle from the elemental's side. Do this repeatedly, and the elemental never has a chance to turn, but also can't keep doing anything for more than a second or so.

    OK, this is worth reporting to the EE Fixpack. Reported, and working on a proper solution (make it so you can't issue commands to the elemental during the mental struggle).

    [Edit] Also, here's a workaround for the player: don't touch the elemental until the battle is complete and you hear the sound. This should be approximately simultaneous with the summoner snapping out of their frozen state.
    Post edited by jmerry on
  • jmerryjmerry Member Posts: 3,882
    And here. Have a hotfix.

    Since the easiest way to break things, by far, is to select the elemental and issue orders with it, I tweaked a spell to make the elemental unselectable while the struggle is in progress. If you can't select the elemental in the first place, you can't give it orders. It's still technically possible to break things, but you have to really try at it and intentionally make things worse for yourself.
Sign In or Register to comment.