Jump to content

Scripts... Again


Aliya

Recommended Posts

'Cast-and-attack' script is from SCSII, I presume?
It's an ancient technique - see Sim's scripting guide. There's also some crude examples from when I was first learning to script. Like I said, it's so the caster can throw daggers or whatever in between prepping spells (because alacrity/no delay = cheese :beer:).

 

It wouldn't surprise me if you've inadvertently got some effect that blocks spells (not just level 1 perhaps) or some high magic resistance that doesn't get bypassed (though it should usually) or something odd like that. Check your effects carefully and if you can't find anything, try running the script on a normal human with no special items or effects. Also, put some DisplayStrings in the block like I said, so you can tell whether it's firing or not. I have also found that certain creature types just can't cast spells, at least not normally. Might be hardcoded to race or animation slots or something.

Link to comment

Gee, I even made the RES spells commands.

 

IF
Allegiance(Myself,NEUTRAL)
Global("Begin","LOCALS",0)
See([PC])
THEN
RESPONSE #100
	Enemy()
	SetGlobal("Begin","LOCALS",1)
END

IF
Global("Begin","LOCALS",1)
Global("Chain","LOCALS",0)
See(NearestEnemyOf(Myself))
HaveSpellRES("SPWI408")
HaveSpellRES("SPWI602")
HaveSpellRES("SPWI611")
HaveSpellRES("SPWI701")
HaveSpellRES("SPWI606")
THEN
RESPONSE #100
	DisplayString(Myself,8292) // Contingency Active
	SpellRES("Myself","SPWI408")
	SpellRES("Myself","SPWI602")
	SpellRES("Myself","SPWI611")
	SpellRES("Myself","SPWI701")
	SpellRES("Myself","SPWI606")
	SetGlobalTimer("ProtDown","LOCALS",FOUR_ROUNDS)
	SetGlobalTimer("Trigger","LOCALS",SIX_ROUNDS)
	SetGlobal("Begin","LOCALS",2)
	SetGlobal("Chain","LOCALS",1)
END

 

I made a second (duplication) creature without any effects at all. Miloch, the anwer to your question - yep there's the display string in general box. But my reaction was - 'The string exists but where the HELL is the result.?' I mean, c'mon it's in one script block.

 

 

EDIT: Woah, we're getting somewhere: still no buffs even with RES version, but he casts other blocks.

 

2nd EDIT: Hmmm... Upon further investigation I realized that only 'short' (ReallyForce) spellcasting doesn't work. Spell and SpellDec work fine on itself. Maybe, if I don't find a solution I'll just stick to upgrading items.

Link to comment
Miloch, the anwer to your question
I don't think I was asking a question - was just giving some recommendations. There should be no reason to use SpellRES over Spell though, unless you need to (i.e. if there's no 'spwi' prefix or whatever, but there is here).
I realized that only 'short' (ReallyForce) spellcasting doesn't work.
Like the IESDP says, those may be unreliable. Did you try force-joining it to see what it's affected by?
Link to comment

Jesus, I need a break... :)

 

I think I coded correctly: He doesn't bre-buff with those ApllySpells; he casts them in a time stop. Ultra cheesiness. Yay. Note that he has only 2 IA memorised... hehe...

 

IF
Allegiance(Myself,NEUTRAL)
Global("Begin","LOCALS",0)
See([PC])
THEN
RESPONSE #100
	Enemy()
	SetGlobal("Begin","LOCALS",1)
END

IF
Global("Begin","LOCALS",1)
Global("Chain","LOCALS",0)
See(NearestEnemyOf(Myself))
THEN
RESPONSE #100
	SetGlobalTimer("ProtDown","LOCALS",FOUR_ROUNDS)
	SetGlobal("Begin","LOCALS",2)
	SetGlobal("Chain","LOCALS",1)
	SpellNoDec(Myself,WIZARD_ENERGY_BLADES)
	AttackOneRound(LastSeenBy(Myself))
END

IF
Global("Chain","LOCALS",1)
See(NearestEnemyOf(Myself))
HaveSpell(WIZARD_ANIMATE_DEAD)
HaveSpell(WIZARD_SUMMON_NISHRUU)
HaveSpell(WIZARD_IMPROVED_ALUCRITY)
THEN
RESPONSE #100
	ForceSpell(Myself,WIZARD_TIME_STOP)
	Spell(Myself,WIZARD_IMPROVED_ALUCRITY)
	Spell(Myself,WIZARD_ANIMATE_DEAD)
	Spell(Myself,WIZARD_ANIMATE_DEAD)
	Spell(Myself,WIZARD_SUMMON_NISHRUU)
	SetGlobal("Chain","LOCALS",2)
END

IF
See(NearestEnemyOf(Myself))
HaveSpell(WIZARD_DRAGONS_BREATH)
HaveSpell(WIZARD_MIRROR_IMAGE)
Global("Draggy","LOCALS",0)
Allegiance(Myself,ENEMY)
THEN
RESPONSE #100
	SpellNoDec(Myself,WIZARD_CARRION)
	Spell(NearestEnemyOf(Myself),WIZARD_DRAGONS_BREATH)
	Spell(Myself,WIZARD_MIRROR_IMAGE)
	SetGlobal("Draggy","LOCALS",1)
END

 

Anyway, everything going fine. Thanks for your help! :beer:

Link to comment

This forum seems pretty fast in dealing with these questions! :)

 

I just wanna ask some more questions, relevant to our little discussion.

 

1. I want to code a creature, like that, in Ascension, that if Imprisoned, the other [ALLY] will release it via Freedom, like that. Although, I don't if SpellCastOnMe trigger is reliable - there's nothing written in IESDP.

 

IF
SpellCastOnMe([ANYTHING],WIZARD_IMPRISONMENT)
Global("Imprisoned","LOCALS",0)
THEN
RESPONSE #100
	SetGlobal("Imprisoned","LOCALS",1)
END

IF
See("Er#Vamp")
Global("Er#PrisonAkshi","GLOBAL",0)
Global("Imprisoned","LOCALS",1)
THEN
RESPONSE #100
	ClearAllActions()
	SetInterrupt(FALSE)
	DisplayStringHead(Myself,1468) // Ahh, no! Help!
	SetGlobal("Er#PrisonAkshi","GLOBAL",1)
	SetGlobal("Imprisoned","LOCALS",2)
	SetInterrupt(TRUE)
END

 

The release looks like this.

IF
GlobalTimerNotExpired("castnattack","LOCALS")
See(NearestEnemyOf(Myself))
Global("Er#PrisonAkshi","GLOBAL",1)
THEN
RESPONSE #100
	ForceSpell(Myself,WIZARD_FREEDOM)
	SetGlobal("Er#PrisonAkshi","GLOBAL",0)
END

 

I can almost imagine him saying, "Gods, do I need to save your butt every time?" :beer:

Link to comment
Although, I don't if SpellCastOnMe trigger is reliable - there's nothing written in IESDP.
Well the only thing is to test it I guess. Normally you'd probably do something like that via StateCheck() or CheckStat() but I see no entry in state.ids or stat.ids for imprisonment (there may be in Detectable Stats but I don't know if you want to mess with that).
Link to comment

Psst... I tried to stay focused to the Ascension script.

 

IF
Global("IMPRISON","LOCALS",1)
Global("SendaiImprisoned","AR6200",0)
THEN
RESPONSE #100
	ClearActions(Myself)
	SetInterrupt(FALSE)
	SetGlobal("IMPRISON","LOCALS",0)
	SetGlobal("SendaiImprisoned","AR6200",1)
	DisplayStringHead(Myself,46151) // help!
	SetInterrupt(TRUE)
END

IF
OR(6)
	Dead("finilla") // Illasera
	Dead("finabaz") // Abazigal
	Dead("finyaga") // Yaga-Shura
	Dead("finbalth") // Balthazar
	Dead("fingrom") // Gromnir Il-Khan
	Dead("finsarev") // Sarevok
Global("IMPRISON","GLOBAL",1)
HasItem("SDScrl3",Myself) // Freedom
!GlobalTimerNotExpired("Spell","LOCALS")
THEN
RESPONSE #100
	SetInterrupt(FALSE)
	SetGlobalTimer("Spell","LOCALS",ONE_ROUND)
	DisplayStringHead(Myself,46153) // uses a scroll
	UseItem("SDScrl3",Myself) // Freedom
	SetGlobal("IMPRISON","GLOBAL",0)
	SetGlobal("IllaseraImprisoned","AR6200",0)
	SetGlobal("AbazigalImprisoned","AR6200",0)
	SetGlobal("YagaImprisoned","AR6200",0)
	SetGlobal("BalthImprisoned","AR6200",0)
	SetGlobal("GromnirImprisoned","AR6200",0)
	SetGlobal("SarevokImprisoned","AR6200",0)
	SetInterrupt(TRUE)
END

Link to comment

Okay, I'm pretty sure with scripts now to the items... (The dialog coding I'm leaving on desert) So I downloaded IEEP from CoM and got to start it. Everything goes smoothly until...

'There has been an error occurred in the program. The specific information for this error as it follows:

 

Permission denied at Dialog_Write.12.'

 

Jesus, I don't get it with all those error, and plus I don't want to scrap the whole game. :) I know I could ask it at CoM, but I'm lazy to register there, and besides tis too dark in there. :beer:

Link to comment

Wow, guys thanks! It actually worked, and I feel like a noob now. Heck, why do I have the feeling when I'm a noob anyway? :beer:

 

Bams are pain for sure. Ipsi said that they need to be on green background (0000FF) right? Why I still have this strange green background in-game? And the coordinates of the center is all wrong.

 

baldr016.jpg

Link to comment

It seems that after reading these tutorials and following them made my .bams corrupted. (NI doesn't want to read them.)

 

I altered only one description and one inventory .bam:

1. For inv one I did Seq1/Fr1 another frame with 32x32.

2. First Seq0/Fr0 is 64x64 with main painting centered.

3. I did (Red0/Blue151/Green 151) transparent background. (Shift+V) for both.

 

 

Mainly, I did follow them but it seems it didn't help. Oh, my God I didn't backup the working bams... :beer:

 

EDIT: 3 minutes later - even Bambatch doesn't read them now.

 

2nd EDIT:

Step Five....Go all the way to the upper right hand side of the screen and click Frames. If this is a ground BAM then put in for Horizontal 27, and for Vertical 24. If this is for a Description BAM then put in for Horizontal 80, and for Vertical put in 112. If this is for an Inventory BAM then leave this blank.

 

Where? I searched the whole frame column and didn't find anything similar.

Link to comment
Where? I searched the whole frame column and didn't find anything similar.
Use BAM Workshop 1 not 2 (if you go to Help < About, it's the one by Glenn Flansburg). It looks like the one in this tutorial. When you click on the Frames tab on the right (not Sequences) you can set your horizontal and vertical coordinates. But first, follow the instructions here to make sure your palette doesn't get hosed.
Link to comment

Hmmm... Seems to be I ran in some sort of problem, I don't really know how to fix. I was testing the battle again (too many times) and, despite that script worked *marvelously* yesterday, today they just don't. True, I've changed some of them and added 'Immunity to effect' to the 'effects' list via NI. In-game, the encounter proceeds as a constant game of tag (attacking player1, ignoring other running scripts, Suspect that something returns false and 'corrupts' others). But I didn't do anything crucial, I'm almost certain of it. I deleted the effects and new scripts blocks, but he still attacks without even ForceSpelling a PFMW as the script orders. True, the whole script consists of ~1300 lines and not everything fires at time. Miloch, can you help? ;) I can show you whole BCS. and CRE. (including two new ITMs).

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...