Progress report (2011+) |
The Black Wyrm's Lair Terms of Use | Help Search Members Calendar |
Progress report (2011+) |
May 27 2011, 06:39 AM
Post
#1
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
After all this years, it's good to start a new thread
Side work: - Monsters : preparation task (sort, group, and find stats) : 100% - AI script (complete rework in progress) : 50% Main component: - BG1 Monsters : 10% - BG2 Monsters : 0% - BG1 Adventurers: 0% - BG2 Adventurers: 0% At this moment, it seems that I undo some of my previous work (compared to old progress report). This is true, but it isn't the same quality, it is a lot higher now. With my new own tools and material, I'll be able to work 5 times faster on main components later on and still get an overall better result. This post has been edited by aigleborgne: Jun 22 2011, 06:41 AM |
|
|
Jun 22 2011, 06:46 AM
Post
#2
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Currently on Death Knight (aka Demon Knight).
It is nearly done, but I have 2 things that are not perfect yet: - Wall of Ice animation, I can't do new animation so I use existing ones but haven't found yet a good one. Tried Ice Storm but it lasts 3 rounds which doesn't fit Wall of Ice in the way I'm using it (as a wall falling down on enemies, as described in P&P) - Script almost finished : missing dispel magic block and then extensive testing - Looking at all CRE to see if some need specific scripts or stats I have spent quite some time on this monster but it plays an important part in BG1 as the final boss of Durlag's Tower ! All in all, it should be finished tonight |
|
|
Jun 22 2011, 09:17 PM
Post
#3
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Haven't finished Death Knight tonight finally !
I've done all CRE and finished scripts but haven't time to test them and haven't found a good animation for wall of ice. Mirror fiend (mirror Death Knight) is now an exact copy of Death Knight : same powers but allegiance is goodbutred. So, he will help party defeating DK + others mirrors. Others mirrors will be a full balanced party of 6 level 7-8 characters. They will be ally with DK against the party. I'm thinking of evilbutgreen allegiance to show that they are party's mirrors, but it might be a little confusing. Each mirror will be bound to one player : mirror 1 to player 1, ... If that player die, mirror will die too, same behavior than DK and mirror fiend |
|
|
Jul 5 2011, 06:36 PM
Post
#4
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Not many updates these days, I'm pretty tired and spend more time on other activities.
I will have 2 weeks at home next month, it will be 2 weeks of modding (not all day through, but several hours each day at least). I'm planning a release in august or september. Always late, I know... In september, I should have 3 weeks at home again, to take care of my new born babies first, but also some time to mod |
|
|
Sep 5 2011, 11:57 AM
Post
#5
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I'm back in modding!
Finally, I didn't mod in august. Was in holidays, but so tired I didn't even think about modding (a full year without holidays is tough!) I've resumed my work last week-end. There was a problem with my current advancement : I didn't check each creature script and just assigned mine. It was wrong because some are related to quest or special behavior. So, I had to check all my creatures scripts, took me several hours ! I'm in vaccation in 2 weeks, so I expect to mod a lot this month. I would be happy to finish all BG1 monsters this month. It's doable, but it is certainly not a sure thing ! I will probably never move on others components. I simply can't do it alone, the game is now rather old, and I plan to start a new modding activity on a new game (Skyrim). My current plan is to finish BG1 monsters and determine if I can manage BG1 npc quickly. By quickly, it means that I won't look into items (except to eventually change or add a weapon, but that's all). A few steps on each npc : - check characteristics with race/class and maybe pick a kit. - check proficiencies and equiped weapons - make a new spellbook inspired by existing one (but heavily based on kit / alignment) - assign scripts Should be between 1mn and 15mn per npc, which is quick enough for me. Add to this around 50-100 hours to finish my scripts. This is a big part, but necessary anyways. Nothing for BG2 : not entirely true, all existing BG1 monsters are also done for BG2 ! Sure, it miss out all interesting powerful monsters, but there are many mods that includes them (aTweaks beeing my favorite) |
|
|
Sep 9 2011, 12:31 PM
Post
#6
|
|
Multiclass F/C/M Forum Member Posts: 256 Joined: 17-October 04 From: Sweden |
Nice to see you back in action!
|
|
|
Sep 20 2011, 08:09 AM
Post
#7
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Hello,
Already late, but I have 3 weeks at home right now I'm finished scripts, and I will prepare several components for each monster or group of monsters. This way, I can test each component one by one and it is also better for distribution. So, my current purpose is to package and test finished monsters (shown in pinned down topic) Testing might be tedious and I will not test each creature ! I will only test monster scripts to control their own abilities. It might not be the perfect P&P monster mod that I dreamed of. It just takes considerable amount of time to make a full test on each creature. But it will certainly be a lot better than current ones After browsing many creatures, I can tell you : Bioware did a lot of copy & paste when creating these creatures and I can't blame them, I do the same in my work. But then, there are many mistakes. For example, everybody know that fire elementals are one the best druid summons. Earth elemental, through in spell level 7, are inferior. This is just because most elementals (fire, earth, ...) have 19 strength. Now, I'm aware it is based on 2nd edition and strength is not always known. But an earth elemental is bound to earth and should be stronger. In 3rd edition, it is obvious. Fire elementals never go beyond 18 strength while lesser earth elementals have 19. 24HD earth elemental have 25 strength. Another copy & paste issue is consistency between levels, hit dice, thac0, saving throws. It is very common to see a level 3 creature with 90 hp. Consequences might be irelevant or not, depending on each case, but I have corrected all of them. Most of them will have better characteristics after correction, some will have lower, especially thac0 (9HD monsters with thac0 of 5 is impossible) |
|
|
Sep 30 2011, 10:09 AM
Post
#8
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I have definitly finished and tested 2 monsters:
- Ankheg - Basilisk (lesser and greater) I have done: - correct several bugs in my AI scripts - maximise AI script compression (before final generation). Now I have a great visibility on all scripts since an average script has 50 lines (including blank lines) but 500 after generation. - correct a few important bug in my tph patching script - repackage my whole tp2 install script So now, it is very fast to make a script and test some creatures. This way, things should be faster |
|
|
Oct 2 2011, 11:53 AM
Post
#9
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Now finished:
- Bear - Crawler - Cat - Dog - Construct Currently working on Death Knight Note that Helmed and Battle Horror are very powerful now, maybe too much! Construct type give the same immunities as undead, plus immunity to 3 spells AND magic missiles. All in all, it is now very hard for a mage to kill a battle horror. Summon is now the key and he will need strong summons. With 21 str and 2D6 great sword, one battle horror was able to destroy my whole party (a party with no items and only cleric/druid). One thing that adds up to the power is the use of proficiency for monsters that use classic weapons. 2 solutions here: - no proficiency - one star max - two star max As a level 9 monster, battle horror currently have 5 in 2 handed sword and 2 in 2 handed weapons. I will look into that potential problem. Eventually, make this system optional during installation. |
|
|
Oct 4 2011, 02:16 PM
Post
#10
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I have finished to test and package all monsters up to elementals.
Now, I will continue to edit monsters, then test and package them before going to the next one. Regarding Elementals, I have added Elder Elemental name for 24HD For example: - Lesser fire elemental - Fire Elemental - Greater Fire Elemental - Elder Fire Elemental This way, you can evaluate your foe or your summon. It is more important to know as there is now quite a difference between each ones. This post has been edited by aigleborgne: Oct 4 2011, 03:51 PM |
|
|
Oct 12 2011, 06:53 PM
Post
#11
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Back to work, so less time to mod.
Right now, I encountered problems with complex mage scripts. Problem 1: it takes about one round to start its first spell, instead of immediate cast for classic script. It has something to do with initialization blocks because if I remove them, it works... It is annoying because a few seconds delay is vital for a caster! Problem 2: my double randomize system doesn't work properly. Sometimes, a caster won't cast any spells for quite some time. One type of spells is selected but for some reason, all spells of that type don't meet requirement so nothing is cast. Or even if very few types are available, there are still randomize on each type, which means that it is possible to not find any type of spells to cast. I am very disapointed with this very limited script language and I can't find any good outcome. Eventually, I'll do simple scripts closed to existing ones. Just better targetting system and some random here and here. |
|
|
Oct 25 2011, 10:05 PM
Post
#12
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
aTweaks is gonna make enhanced monsters obsolete, I just can't reach the level of quality of aTweaks in every aspects.
Well, aTweaks don't cover all BG1 monsters so my component still makes sense. I wanted to finish my install tp2 script, so I started to work on adventurers. Some numbers: - 116 very important adventurers - 108 important adventurers (it includes powerful ones like Thalantyr) - 145 secondary adventurers, those should not get attacked so they are just bonus. I will make some of them, but not all ! - about 40 groups of adventurers These numbers count creatures, one adventurer might have several files. I make a new experience table for adventurers. I think it is more accurate and, at least, is consistent. For each adventurer, I check levels and class first. So many class are irelevant, as if it was mass copy and paste to go through all CRE very fast ! I tried to find the most accurate class for each one and for many, it remains identical. Then, I look if a kit can be assigned, I like kits and I think many adventurers should get one. After, I check abilities scores with race/class/kit, it is usually correct, but some were not. Many CRE were just clones : same abilities scores, same class, just different names... In case of a spellcaster, I do a whole new spellbook. Finally, I remove all illegal items and immunities, adjust proficiencies, thac0, hit points, saving throws, add kit abilities and immunities, and assign new scripts. All this only takes a few minutes, my editor helps a lot. A spellcaster takes more time as I need to make a spellbook, and I don't want to make all the same ones. Diversity is more fun. For example, I started with Amarande, level 6 archdruid in cloakwood. An archdruid is level 13, something a lot more powerful ! So I made him level 13 avenger. I chose avenger because of his low constitution and strength scores (9), it fits avenger ones! I removed his illegal items and didn't give him new ones, eventually I'll give him a few potions, but that's all. All is powers now come from his new spellbook and this is something! He should be easily taken out by a low level party, but eh, he is an archdruid ! Now, we all know that druid or cleric, even at high levels, are not very dangerous opponents. Sure they can be dangerous if you let them cast their spells but it is quite easy to stop them before. They don't have all those great protection spells that mage have. A simple level 7 mage with minor globe and stone skin is very well protected in BG1. Even at level 13, a druid can't compare! So, a well prepared party could kill him before he could cast more than 2 spells. It is for that reason that I might give him a few potions, sounds fair to me. On a final note, I am considering Spell Revision as a require mod. It would allow more diversity on spellbooks, and I really can't make 2 spellbooks for each spellcaster. Same for divine remix as there are a lot of enemies cleric in that game and only 2 kits available (as most are evil or neutral) |
|
|
Oct 26 2011, 06:06 PM
Post
#13
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
After long considerations, I confirm that my mod will assume that Spell Revision is installed as I really like most of the changes.
Regarding Divine Remix, I'm not sure about spheres system. I haven't really played DR but I heard that spheres are more a pain than a blessing. |
|
|
Oct 30 2011, 10:17 AM
Post
#14
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I am currently rebuilding my mage scripts with Spell Revision in mind.
I have many scripts, for each class and eventually for some kits if necessary. On top of that, for spellcasters, I do a script for each new spell level. It is easier to select spell order this way, and depending on level, spell order can change. For example, magic missile is rather weak at level 1, but become great later on. I have added doom to detectable spells. Priest will now cast doom before casting another spell. For example, he want to cast hold spell. He checks a valid target (not disabled), then he checks a valid target affected by either Doom or Greater Malison. If he found a target affected by doom, he cast hold. If not and if he has doom, he will cast it before hold. This way, he makes a good use of doom spell. In fact, he will try to focus all spells after that. Doom can be seen as "focus on him". Althrough, target must be fill other criteria (like not beeing disable, ...) By now, I have only done a few scripts : fighter (only one script) and druid level 1, 3, 5, 7. I am testing druid script with Seniyad and Amarande and I am satisfied with current results. I have tested SCS for these foes and don't like it at all. Yes, they are powerful and it is well done but there are several things I don't like: - spellbooks are generated. It reminds me my old generator It is a good way to quickly do all casters but it is a lot better to make a custom spellbook for each caster. - scripts still cheat in some ways. Some spells are cast even if not memorized (Detect invisibility for example) - scripts do many check for each spell : resistances, immunity... some may like it, some don't. I have added all checks in my mod, but they all depend on a parameter, it can be enable or disable. It will take me some time to do all scripts. Cleric will be very closed to druid so it will be quick. But mages are huge ! mage, bard, wild mage on one set, then all others on separate set. Sorcerer will be the hardest and I don't know yet if I will put on them in game. My editor can build a sorcerer spellbook but I need a script dedicated and efficient. Initially, I will do script to spell level 6 as it covers most spell casters. Then, I will add others when needed. Below an example of a script before baf generation. Java program uses an ini file for a few parameters and IMMUNITY_CHECK is one of them. Globally, it is quite simple but the job is done. CODE // Druid [CASTER=PRIEST] [include=init_npc] [include=tracking] [include=potions] [include=disable_spellcasting] //[include=shapeshift_druid] // Improved Invisibility [action=SPELL(SPDR401,,75,notarget);require=*visible] // Gust of Wind [action=SPELL(SPPR318,,75,notarget,hit);require=range(6,attacker)] // Cloak of Fear [action=SPELL(CLERIC_CLOAK_OF_FEAR,,75);target=NearestEnemy(num:6);require=range(6),!disable,!fearImmunity] // Neutralize poison [action=SPELL(CLERIC_NEUTRALIZE_POISON,,,notarget);require=*state(STATE_POISONED)] // Slow Poison [action=SPELL(CLERIC_SLOW_POISON,,,notarget);require=*state(STATE_POISONED)] // Cure Critical Wounds [action=SPELL(CLERIC_CURE_SERIOUS_WOUNDS,,,notarget);require=*hp%lt(70),OR(*sanctuary,!seeEnemy,!hit)] // Cure Moderate Wounds [action=SPELL(SPPR215,,,notarget);require=*hp%lt(80),OR(*sanctuary,!seeEnemy,!hit)] // Cure Light Wounds [action=SPELL(CLERIC_CURE_LIGHT_WOUNDS,,,notarget);require=*hp%lt(90),OR(*sanctuary,!seeEnemy,!hit)] // Strength of One [action=SPELL(CLERIC_STRENGTH_OF_ONE,,75,notarget)] // Death Ward [action=SPELL(CLERIC_DEATH_WARD,,75,notarget)] // Free action [action=SPELL(CLERIC_FREE_ACTION,,75,notarget)] // Woodland beings [action=SPELL(CLERIC_CALL_WOODLAND_BEINGS,,75,notarget)] // Animal Summoning 1 [action=SPELL(CLERIC_ANIMAL_SUMMONING_1,,75,notarget)] // Totemic animals [action=TIMER(ja#totemic,30),SPELL(SPCL621,,50,notarget)] // Web [action=SPELL(SPDR201,,75);require=!disable,!magicImmunity,!globe,!holdImmunity] // Entangle [action=SPELL(CLERIC_ENTANGLE,,75);target=NearestEnemy(num:5);require=!disable,!magicImmunity,!globe] // Ice Storm [target=Summon(num:5);require=valid,!magicImmunity,!coldImmunity] [action=SPELL(SPPR418,,75);target=Player;require=*resistCold,!magicImmunity,!coldImmunity] // Fire Trap [target=Summon(num:5);require=valid,!magicImmunity,!fireImmunity,!globe] [action=SPELL(SPPR216,,75);target=Player;require=!magicImmunity,!fireImmunity,!globe] // Dispel Magic [action=SPELL(CLERIC_DISPEL_MAGIC,,75),RUN(30);target=Player;require=enchanted,!range(15)] // Storm shield [action=SPELL(SPPR322,,75,notarget)] // Charm Person or Animal [target=Fighter;require=valid,!disable,!magicImmunity,!globe,!charmImmunity] [target=Fighter;require=valid,!disable,!magicImmunity,!globe,!charmImmunity,stat(1,WIZARD_GREATER_MALISON)] [action=SPELL(CLERIC_DOOM,,75);require=!stat(1,WIZARD_GREATER_MALISON),!disable,!magicImmunity,!globe,!charmImmunity] [action=SPELL(CLERIC_CHARM_PERSON,,75,fighter);require=!disable,!magicImmunity,!globe,!charmImmunity] // Hold Person or Animal [target=Player;require=!disable,!magicImmunity,!globe,!holdImmunity] [target=Player;require=!disable,!magicImmunity,!globe,!holdImmunity,stat(1,WIZARD_GREATER_MALISON)] [action=SPELL(CLERIC_DOOM,,75);require=!stat(1,WIZARD_GREATER_MALISON),!disable,!magicImmunity,!globe,!holdImmunity] [action=SPELL(SPPR305,,75);require=!disable,!magicImmunity,!globe,!holdImmunity] // Summon Insects [target=Caster;require=valid,!disable,!silence,!failure,!magicImmunity,!globe] [target=Caster;require=valid,!disable,!silence,!failure,!magicImmunity,!globe,stat(1,WIZARD_GREATER_MALISON)] [action=SPELL(CLERIC_DOOM,,75);require=!stat(1,WIZARD_GREATER_MALISON),!disable,!silence,!failure,!magicImmunity,!globe] [action=SPELL(CLERIC_SUMMON_INSECTS,,75,caster);require=!disable,!silence,!failure,!magicImmunity,!globe] // Mistcast Magic [action=SPELL(CLERIC_MISCAST_MAGIC,,75,caster);require=!disable,!silence,!failure,!magicImmunity,!globe] // Contagion [target=Fighter;require=valid,!disable,!magicImmunity,!globe] [target=Fighter;require=valid,!disable,!magicImmunity,!globe,stat(1,WIZARD_GREATER_MALISON)] [action=SPELL(CLERIC_DOOM,,75);require=!stat(1,WIZARD_GREATER_MALISON),!disable,!magicImmunity,!globe] [action=SPELL(SPPR311,,75,fighter);target=Fighter;require=!disable,!magicImmunity,!globe] // Select random target or doomed target [target=Player;require=valid,!magicImmunity,!globe] [target=Player;require=valid,!magicImmunity,!globe,stat(1,WIZARD_GREATER_MALISON)] [action=SPELL(CLERIC_DOOM,,75);require=!stat(1,WIZARD_GREATER_MALISON),!magicImmunity,!globe] // Poison [action=SPELL(CLERIC_POISON,,75);require=!magicImmunity,!poisonImmunity] // Call Lightning [action=SPELL(CLERIC_CALL_LIGHTNING,,75);require=!magicImmunity,!globe,!electricityImmunity] // Lightning Bolt [action=SPELL(SPDR301,,75);require=!magicImmunity,!globe,!electricityImmunity] // Bless [action=SPELL(CLERIC_BLESS,,75,notarget)] // Neutralize poison [action=SPELL(CLERIC_NEUTRALIZE_POISON,,75,notarget)] // Barkskin [action=SPELL(CLERIC_BARKSKIN,,75,notarget)] // Resist Fire and Cold [action=SPELL(CLERIC_RESIST_FIRE,,75,notarget)] // Armor of faith [action=SPELL(CLERIC_ARMOR_OF_FAITH,,75,notarget);require=*stat(0,CLERIC_ARMOR_OF_FAITH)] // Flame Blade [action=SPELL(CLERIC_FLAME_BLADE,,75,notarget);require=!*magicalWeaponItem] // Shillelagh [action=SPELL(CLERIC_SHILLELAGH,,75,notarget);require=!*magicalWeaponItem] // Strength of Stone [action=SPELL(SPPR115,,75,notarget)] // Know Opponent [action=SPELL(SPPR209,,75);require=!magicImmunity,!globe] // Faerie Fire [action=SPELL(SPPR114,,75);require=!magicImmunity,!globe] // Chromatic Orb [action=SPELL(SPDR101,,75);require=!magicImmunity,!globe] // Sunscorch [action=SPELL(SPPR116,,75);require=!magicImmunity,!globe,!fireImmunity] [action=WALK;require=*invisible] [include=combat_smart_both] A few explanations of code: CODE // Hold Person or Animal [target=Player;require=!disable,!magicImmunity,!globe,!holdImmunity] [target=Player;require=!disable,!magicImmunity,!globe,!holdImmunity,stat(1,WIZARD_GREATER_MALISON)] [action=SPELL(CLERIC_DOOM,,75);require=!stat(1,WIZARD_GREATER_MALISON),!disable,!magicImmunity,!globe,!holdImmunity] [action=SPELL(SPPR305,,75);require=!disable,!magicImmunity,!globe,!holdImmunity] It randomly selects a valid target (no sanctuary or improved invisibility), not disable (charm, stun, fear, hold, fear...) It randomly selects a valid target (no sanctuary or improved invisibility), not disable (charm, stun, fear, hold, fear...), and affected by doom or greater malison If selected target is not affect by doom or greater malison and I have doom, 75% to cast doom 75% to cast Hold Person or Animal Other attributes are used if IMMUNITY_CHECK is set to true. It generates: CODE // Hold Person or Animal
IF OR(6) StateCheck(Player6,STATE_CHARMED) CheckStatGT(Player6,0,HELD) StateCheck(Player6,STATE_HARMLESS) StateCheck(Player6,STATE_CONFUSED) StateCheck(Player6,STATE_PANIC) RandomNumGT(1000,167) OR(6) StateCheck(Player5,STATE_CHARMED) CheckStatGT(Player5,0,HELD) StateCheck(Player5,STATE_HARMLESS) StateCheck(Player5,STATE_CONFUSED) StateCheck(Player5,STATE_PANIC) RandomNumGT(1000,200) OR(6) StateCheck(Player4,STATE_CHARMED) CheckStatGT(Player4,0,HELD) StateCheck(Player4,STATE_HARMLESS) StateCheck(Player4,STATE_CONFUSED) StateCheck(Player4,STATE_PANIC) RandomNumGT(1000,250) OR(6) StateCheck(Player3,STATE_CHARMED) CheckStatGT(Player3,0,HELD) StateCheck(Player3,STATE_HARMLESS) StateCheck(Player3,STATE_CONFUSED) StateCheck(Player3,STATE_PANIC) RandomNumGT(1000,333) OR(6) StateCheck(Player2,STATE_CHARMED) CheckStatGT(Player2,0,HELD) StateCheck(Player2,STATE_HARMLESS) StateCheck(Player2,STATE_CONFUSED) StateCheck(Player2,STATE_PANIC) RandomNumGT(1000,500) OR(5) StateCheck(Player1,STATE_CHARMED) CheckStatGT(Player1,0,HELD) StateCheck(Player1,STATE_HARMLESS) StateCheck(Player1,STATE_CONFUSED) StateCheck(Player1,STATE_PANIC) THEN RESPONSE #100 Continue() END IF OR(7) StateCheck(Player6,STATE_CHARMED) CheckStatGT(Player6,0,HELD) StateCheck(Player6,STATE_HARMLESS) StateCheck(Player6,STATE_CONFUSED) StateCheck(Player6,STATE_PANIC) !CheckStat(Player6,1,WIZARD_GREATER_MALISON) RandomNumGT(1000,167) OR(7) StateCheck(Player5,STATE_CHARMED) CheckStatGT(Player5,0,HELD) StateCheck(Player5,STATE_HARMLESS) StateCheck(Player5,STATE_CONFUSED) StateCheck(Player5,STATE_PANIC) !CheckStat(Player5,1,WIZARD_GREATER_MALISON) RandomNumGT(1000,200) OR(7) StateCheck(Player4,STATE_CHARMED) CheckStatGT(Player4,0,HELD) StateCheck(Player4,STATE_HARMLESS) StateCheck(Player4,STATE_CONFUSED) StateCheck(Player4,STATE_PANIC) !CheckStat(Player4,1,WIZARD_GREATER_MALISON) RandomNumGT(1000,250) OR(7) StateCheck(Player3,STATE_CHARMED) CheckStatGT(Player3,0,HELD) StateCheck(Player3,STATE_HARMLESS) StateCheck(Player3,STATE_CONFUSED) StateCheck(Player3,STATE_PANIC) !CheckStat(Player3,1,WIZARD_GREATER_MALISON) RandomNumGT(1000,333) OR(7) StateCheck(Player2,STATE_CHARMED) CheckStatGT(Player2,0,HELD) StateCheck(Player2,STATE_HARMLESS) StateCheck(Player2,STATE_CONFUSED) StateCheck(Player2,STATE_PANIC) !CheckStat(Player2,1,WIZARD_GREATER_MALISON) RandomNumGT(1000,500) OR(6) StateCheck(Player1,STATE_CHARMED) CheckStatGT(Player1,0,HELD) StateCheck(Player1,STATE_HARMLESS) StateCheck(Player1,STATE_CONFUSED) StateCheck(Player1,STATE_PANIC) !CheckStat(Player1,1,WIZARD_GREATER_MALISON) THEN RESPONSE #100 Continue() END IF HaveSpell(CLERIC_DOOM) Global("ja#disable_spellcasting","LOCALS",0) !GlobalTimerNotExpired("ja#round","LOCALS") !CheckStatGT(LastSeenBy(Myself),0,SANCTUARY) !StateCheck(LastSeenBy(Myself),STATE_IMPROVEDINVISIBILITY) !General(LastSeenBy(Myself),WEAPON) See(LastSeenBy(Myself)) !CheckStat(LastSeenBy(Myself),1,WIZARD_GREATER_MALISON) !CheckStatGT(LastSeenBy(Myself),0,HELD) !StateCheck(LastSeenBy(Myself),STATE_HARMLESS) !StateCheck(LastSeenBy(Myself),STATE_CONFUSED) !StateCheck(LastSeenBy(Myself),STATE_PANIC) RandomNumGT(100,25) THEN RESPONSE #100 SetGlobalTimer("ja#round","LOCALS",6) Spell(LastSeenBy(Myself),CLERIC_DOOM) END IF HaveSpellRES("SPPR305") Global("ja#disable_spellcasting","LOCALS",0) !GlobalTimerNotExpired("ja#round","LOCALS") !CheckStatGT(LastSeenBy(Myself),0,SANCTUARY) !StateCheck(LastSeenBy(Myself),STATE_IMPROVEDINVISIBILITY) !General(LastSeenBy(Myself),WEAPON) See(LastSeenBy(Myself)) !CheckStatGT(LastSeenBy(Myself),0,HELD) !StateCheck(LastSeenBy(Myself),STATE_HARMLESS) !StateCheck(LastSeenBy(Myself),STATE_CONFUSED) !StateCheck(LastSeenBy(Myself),STATE_PANIC) RandomNumGT(100,25) THEN RESPONSE #100 SetGlobalTimer("ja#round","LOCALS",6) SpellRES("SPPR305",LastSeenBy(Myself)) END This post has been edited by aigleborgne: Oct 30 2011, 01:18 PM |
|
|
Nov 1 2011, 12:58 PM
Post
#15
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I have finished all cleric and druid scripts.
For maintenance and improvement issues, I have made some changes in my generator. Now, each block can be associated with a level, so when I generate a script, I can restrict all blocks to a maximum level. This way, I have one file containing all spells : cleric and druid. Then each script set their own level variable. Drawbacks : I can't make specific spell order Advantages : adding a new spell, modifiy spells conditions, change order... and it happens often currently! I have started to work on mage scripts and with Spell Revision, I am very happy to make spellbooks! I use PnP rules to make spellbooks : a kit must have at least one spell of its school memorized, and when it is not too much, I use PnP opposite schools. So conjurer can't access to invoker spells. I think it is more balanced but can be seen as a nerf because players don't have these restrictions. But Spell Revision help a lot here, with many spells that was useless before and are now good ! Kits try to use many spells of their own schools, but I am often limitated with balance and spells availability. |
|
|
Nov 5 2011, 08:58 AM
Post
#16
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I have finished mage spellbooks up to spell level 5. I am not very satisfied with current spell order but it is rather difficult to find a good one.
I have also work on minor sequencer and contingency. Specialize mages will use PnP rules for their spellbook as I said earlier. This way, they have more restrictions than a player : - more opposite schools - forced to choose at least one spell of their own school each spell level - I tried to really focus on primary school and give them as many spells of their own school as possible. I feel that a necromancer with 5 level 1 spells and only one necromancy spell is not really a necromancer! - Same thing applies for sequencer and contingency |
|
|
Dec 27 2011, 06:36 PM
Post
#17
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I was busy on my real life last month but I found several hours to work on my mod.
Again, most of my time was focus on scripts. My generator becomes very powerful and efficient. I found out that generic caster scripts are not good enough and too complicated to support. So, every spellcaster will have a specific script designed with his spellbook. Downside on this choice is that changing spellbook implies to change script. Now let's see advantages: - smaller script size - better spell order as it is possible to imagine how to play a set spellbook - less errors because script is rather small A quick example: a lone conjurer should cast haste after summoning many creatures while a mage in a group should cast haste in the beginning of the battle. Each situation requires a specific script. Below an example of Davaeorn script. Notice how small it is. Right now, I'm pretty satisfied with it, but it might change a bit. CODE [CASTER=MAGE]
[CASTER_LEVEL=11] [MAX_SPELL_LEVEL=5] [RUN_AWAY_FROM_AOE=false] [include=autocast_spell_arcane] IF Detect([PC]) NumTimesTalkedTo(0) THEN RESPONSE #100 StartDialog("_DAVAEO",LastSeenBy(Myself)) END [include=init_npc] [include=disable_spellcasting] // Track escaping target [action=MOVE;requireSelf=!blind;require=!seeEnemy,visible,hpgt(0),range(70);target=attacker] [action=MOVE;requireSelf=!blind;require=!seeEnemy,visible,hpgt(0),range(70);target=lastseen] [action=MOVE;requireSelf=!blind;require=!seeEnemy,visible,hpgt(0),range(70);target=player1] // if no enemies detected, stop combat [action=GLOBAL(ja#combat,0);require=!detectEnemy] // Dimension Door IF Global("ja#teleport","LOCALS",1) THEN RESPONSE #70 SetGlobal("ja#teleport","LOCALS",0) ForceSpellPoint([1244.780],WIZARD_DIMENSION_DOOR) RESPONSE #80 SetGlobal("ja#teleport","LOCALS",0) ForceSpellPoint([1388.421],WIZARD_DIMENSION_DOOR) RESPONSE #90 SetGlobal("ja#teleport","LOCALS",0) ForceSpellPoint([812.450],WIZARD_DIMENSION_DOOR) RESPONSE #100 SetGlobal("ja#teleport","LOCALS",0) ForceSpellPoint([856.825],WIZARD_DIMENSION_DOOR) END [spell=WIZARD_STONE_SKIN] [spell=Shadow Door;requireSelf=!improvedInvisible] [spell=Shadow Door;requireSelf=hit] [spell=Minor Globe of Invulnerability;requireSelf=norandom,visible] [spell=WIZARD_MIRROR_IMAGE] [spell=WIZARD_PROTECTION_FROM_NORMAL_MISSILES] [spell=Minor Globe of Invulnerability;require=norandom] [spell=WIZARD_SPELL_IMMUNITY_INVOCATION;require=norandom] [spell=Stinking Cloud;teleport;target=default] [spell=WIZARD_ICE_STORM;teleport;target=default] [spell=WIZARD_FIREBALL;teleport;target=default] [spell=WIZARD_LIGHTNING_BOLT;teleport;target=default] [spell=Cone of Cold;teleport;target=default] [action=MINORSEQUENCER(WIZARD_MAGIC_MISSILE,WIZARD_MAGIC_MISSILE,response<60>), MINORSEQUENCER(WIZARD_AGANNAZAR_SCORCHER,WIZARD_AGANNAZAR_SCORCHER,response<80>), MINORSEQUENCER(WIZARD_MAGIC_MISSILE,WIZARD_AGANNAZAR_SCORCHER,response<100>) ;teleport;target=player;require=!disable,random2(75)] [spell=Agannazar's Scorcher;teleport;target=default;require=random2(75)] [spell=WIZARD_MAGIC_MISSILE;teleport;target=default] [include=combat_mage] [include=combat_smart_both] |
|
|
Dec 29 2011, 07:43 AM
Post
#18
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
I am highly motivated these days and I even work on my mod at my office or at midday.
I will release an alpha version next week, that could be seen as a demo. It will include all these adventurers: - Aldeth Sashenstar, barbarian - Amarande, avenger - Arkion, necromancer - Arkushule, diviner - Black Talon Elite, wizard slayer - Borda, mage/thief - Brage, fighter (he now fights with his curse berserking sword and I added all immunities in that sword, as it should have been) - Corsone, avenger - Cuchol, wild mage - Cythandria, conjurer - Dabron Sashenstar, archer - Davaeorn, invoker - Dradeel, enchanter Some of these are really powerful ! (Amarande, Davaeorn, Cythandria) Dradeel should not be attacked but you can come to a fight if you provoke him. In the first encounter, he doesn't have his spellbook but has 3 selune spells. I added sequencers and contingency (might have been cast before loosing his spellbook). Because a mage can have contingency and chain contingencies, minor sequencer, spell sequencer, and spell trigger, it makes him quite powerful ! After recovering his spellbook, I don't remember if he can be attacked, but he will have all spells memorized this time! Althrough it would mave no sense to attack him at this point. I have done many monsters too, and I might include them in the demo. Remember that Spell Revision is required, and without, my mod won't install at all. It is so good that I can't see any reason to not use it |
|
|
Dec 29 2011, 09:18 AM
Post
#19
|
|
Multiclass F/C/M Forum Member Posts: 256 Joined: 17-October 04 From: Sweden |
These are great news, aigleborgne!
Thanks for putting so much time in refining the scripts. I personally believe SCS to be a great modification. I like SCS II less because it might add to the crazy power's escalation in a way that practically every single fight becomes a serious menace to the player, forcing difficult challenges one after the other. And when it's not difficult, it can be practically impossible, an exercise of metagaming and reload. I am thankful to DavidW because he kindly allowed (although he does not support it) for stripping the AI of detectable item, which is something I really loathe. I am happy to read that Enhanced Creature also allows for enabling or disabling it (if I understood well). My criticism to your approach is one (and you perhaps understand it because I moved the same criticism when I was collaborating with you): you force the user to have some mods installed. I personally have SR in my installation (but definitely not Divine Remix) but I believe that it should be possible to play Enhanced Creature without SR too! In this, DavidW is ahead of you, I think. SCS does not even require (only recommends) the BG2 Fixpack. Good luck with your demo release! |
|
|
Dec 29 2011, 06:10 PM
Post
#20
|
|
Mod Developer Posts: 210 Joined: 3-December 05 |
Yeah, I gave up Divine Remix too.
Regarding SR, I have based all my spellbooks with SR in mind. Removing SR implies to check all spellbooks again to see what should be changed, it is almost like doing 2 spellbooks for each caster. I don't have time to do this right now. Plus, I don't see the point to play the game without SR in 2011. Players that still play BG have tons of mods installed and SR is likely to be one of them. A mod like SR radically change the whole spellcasting system. It's like changing the fundations of a structure. Then, it's difficult to make a mod that can be designed for both states. As for my AI, you can disable or enable many things: ; barbarian and berserker rage CHECK_RAGE=false ; CHECK_ELEMENTAL_IMMUNITY includes resistances to fire, cold, electricity, acid, magic damage CHECK_ELEMENTAL_IMMUNITY=false CHECK_POISON_IMMUNITY=false CHECK_MAGIC_RESISTANCE=false ; CHECK_SPELL_PROTECTIONS includes minor globe, spell immunity, spell turning, ... CHECK_SPELL_PROTECTIONS=false ; CHECK_WEAPON_PROTECTIONS includes stoneskin, protection from missile/normal/weapon/magic weapon, mantle, ... CHECK_WEAPON_PROTECTIONS=false CHECK_SLEEP_IMMUNITY=false CHECK_FEAR_IMMUNITY=false CHECK_STUN_IMMUNITY=false CHECK_HOLD_IMMUNITY=false CHECK_CHARM_IMMUNITY=false CHECK_CONFUSION_IMMUNITY=false CHECK_DEATH_IMMUNITY=false ALL_CHECK_OVERRIDE=false These are great news, aigleborgne! Thanks for putting so much time in refining the scripts. I personally believe SCS to be a great modification. I like SCS II less because it might add to the crazy power's escalation in a way that practically every single fight becomes a serious menace to the player, forcing difficult challenges one after the other. And when it's not difficult, it can be practically impossible, an exercise of metagaming and reload. I am thankful to DavidW because he kindly allowed (although he does not support it) for stripping the AI of detectable item, which is something I really loathe. I am happy to read that Enhanced Creature also allows for enabling or disabling it (if I understood well). My criticism to your approach is one (and you perhaps understand it because I moved the same criticism when I was collaborating with you): you force the user to have some mods installed. I personally have SR in my installation (but definitely not Divine Remix) but I believe that it should be possible to play Enhanced Creature without SR too! In this, DavidW is ahead of you, I think. SCS does not even require (only recommends) the BG2 Fixpack. Good luck with your demo release! |
|
|
Lo-Fi Version | Time is now: 1st November 2024 - 12:18 AM |