The Black Wyrm Lair Forums
The Black Wyrm's Lair Terms of Use Help Search Members Calendar

Welcome Guest ( Log In | Register )

> Spellpack and SCS AI
DavidW
post Aug 9 2008, 06:35 PM
Post #1





Forum Member
Posts: 105
Joined: 25-August 06




I'm in the process of revising the AI in the original Sword Coast Stratagems, and I've probably got time to make some modest allowance for the possibility of Spellpack being installed. It would be helpful to know:

(i) some foolproof way of detecting if Spellpack is installed;
(ii) your advice on how clerics, druids and mages optimised for the old spellset ought to be rethinking their strategy and spell choices if Spellpack is installed (L1-5 spells only).

If this turns out to be viable, I'll extend it to SCSII in the fullness of time.
Go to the top of the page
 
Quote Post
 
Start new topic
Replies
Galactygon
post Aug 17 2008, 12:14 PM
Post #2



Group Icon

Mod Developer
Posts: 1158
Joined: 22-July 04
From: Sweden




I will keep the list as short as possible. In this case a FILE_EXISTS_IN_GAME is a better idea IMO, since there is both a "Setup-SpellPackB5.tp2" and a "Setup-SpellPackB5_Patch.tp2". With MOD_IS_INSTALLED, you will have to write everything twice (or more, since some people might still use B4).

Here is the list:
1.) Sanctuary can be cast to protect allies.
2.) Shillelagh gives you 2 attacks per round, more useful for druids.
3.) Call Lightning does not fire off automatically once per turn. Instead, you would have to cast SPIN193.spl every turn. Also, it is a very long range spell and can be tricky to pull off in a battle (casting time of 1 round). I might suggest something like this:
CODE
IF
  AreaType(OUTDOOR)
  HaveSpell(CLERIC_CALL_LIGHTNING) // Do this for SPIN193 as well
  !See(NearestEnemyOf(Myself))
  Range(LastSeenBy(Myself),100)
... // more triggers if necessary
// I would not do more elaborate checks, since the druid is too far to realistically evaluate resistances
THEN
  RESPONSE #100
    Spell(LastSeenBy(Myself),CLERIC_CALL_LIGHTNING)
END

IF
  AreaType(OUTDOOR)
  HaveSpell(CLERIC_CALL_LIGHTNING) // Do this for SPIN193 as well
  !See(NearestEnemyOf(Myself))
  OR(3)
    Heard([0.ANIMAL],ALERT)
    Heard([0.0.0.DRUID_ALL],ALERT)
    Heard([0.0.WYVERN],ALERT)
  !See(LastSeenBy(LastHeardBy(Myself)))
  OR(2)
    Allegiance(Myself,EVILCUTOFF)
    Allegiance(Myself,GOODBUTRED)
  OR(2)
    Allegiance(LastSeenBy(LastHeardBy(Myself)),PC)
    Allegiance(LastSeenBy(LastHeardBy(Myself)),ALLY)
... // more triggers if necessary
// I would not do more elaborate checks, since the druid is too far to realistically evaluate resistances
THEN
  RESPONSE #100
    Spell(LastSeenBy(LastHeardBy(Myself)),CLERIC_CALL_LIGHTNING)
END

IF
  AreaType(OUTDOOR)
  HaveSpell(CLERIC_CALL_LIGHTNING) // Do this for SPIN193 as well
  !AttackedBy([ANYONE])
  See(NearestEnemyOf(Myself))
... // more checks if necessary
THEN
  RESPONSE #100
    RunAwayFrom(NearestEnemyOf(Myself),15) // The druid would keep running away until it does not see any enemies and proceeds to call lightning bolts
END

// After a whole bunch of other blocks should druids resort to csating Call Lightning in combat

This can give the druids of cloakwood the reputation they deserve.

4.) Invisibility Purge is now an abjuration spell, and lasts for a long time. I have not made it detectable yet, but I will have a variable "INVPURGE" being set in B6 (but I can send you the files earlier).

5.) Mental Domination requires concentration to maintain, so I would not have the AI cast it.

6.) Flamestrike hsa a small area of effect, so place checks of
CODE
!Range(LastSeenBy(Myself),10)
!AttackedBy(LastSeenBy(Myself),MELEE)


7.) Like Call Lightning, Insect Plague is a very potent spell that takes 2 rounds to pull off, but has a long range. Druids should use it just like Call Lightning; ie not directly in battle.

8.) Colour Spray is a short range spell, but affects creatures of all hit die. Should be a favourite of low level mages (like the bounty hunters you meet), since characters below their level and level 6 recieve no saving throw.

9.) Armour lasts for 1 full week, so that means all mages have it as a buff. Speaking of Buffs, it wouldn't hurt to have some mages start with invisibility before combat.

10.) Detect Invsibility lasts for 2 rounds per level, and sets the stat SEEINVISIBLE.

11.) It is impossible to fire missile weapons on webbed creatures. Unfortunately stat ACMISSILEMOD is broken so you will have to look for WEB instead.
12.) Web summons a whole bunch of invisible creatures that react to fire damage. Their class is set to 41. Something your spellcasters could do is cast fireshield or flameblade if they are in the middle of a web, or run away (outdoor areas have enough space to circumvent webs). I wouldn't have them cast a fireball on webbed enemies.
CODE
IF
  Detect([0.0.0.41])
  Range(LastSeenBy(Myself),5)
  !HasItemEquiped("ANTIWEB"Myself)
  HaveSpell(WIZARD_FIRE_SHIELD_RED) // Do this for fireshield blue, aura of flaming death, and flameblade as well
... // more checks if necessary

IF
  AreaType(OUTDOOR)
  Detect([0.0.0.41])
  Range(LastSeenBy(Myself),10)
  !Range(LastSeenBy(Myself),5)
  !HasItemEquiped("ANTIWEB"Myself)
... // more checks if necessary
THEN
... // more actions if necessary
RunAwayFrom(LastSeenBy(Myself),15)
END

IF
  HaveSpell(WIZARD_FIREBALL)
  See(NearestEnemyOf(Myself))
  !CheckStatGT(LastSeenBy(Myself),0,WEB)
... // more checks if necessary


I imagine these blocks would appear very differently in SCSII scripts, but something like this works.

13.) Glitterdust sets the local variable ("GLITTER","LOCALS") to one. There is a bug in B5 that doesn't always reset the local variable back to zero when the spell ends/is dispelled. I simply forgot to include an .eff file. I have fixed this, and it will appear in B6.

But I can send you that .eff file so you could include that with SCSII in case you manage a new version earlier than I do.

14.) Otiluke's Resilient Sphere can be cast to protect allies, and they forego their saving throws and magic resistance

15.) Shadow Door has the potential to maze low-level creatures if they pursue the fleeing wizard through the door. Use this spell after Improved Invisibility, and when creatures are closing in on the wizard.

DavidW, if you are interested, I have a few script blocks somewhere that utilizes Dimension Door so that creatures can cast it to flee the party.

-Galactygon


--------------------
Go to the top of the page
 
Quote Post

Posts in this topic


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:



- Lo-Fi Version Time is now: 7th October 2025 - 12:51 AM