Jump to content


Photo

PnP Fiends [IMPLEMENTED]


  • Please log in to reply
175 replies to this topic

#1 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 20 December 2009 - 04:52 AM

Introduction

This component brings all Fiends in the game closer to their PnP counterparts. Legitimately missing abilities are restored and spuriously granted benefits are removed. The Fiends' AI has been enhanced as well, and it now allows them to act in accordance to their PnP behavior and intelligence scores. In effect, these changes moderately increase the difficulty of dealing with Fiend opponents. Finally, the Blood War now plays a slightly more prominent role. Whenever Baatezu and Tanar'ri meet, they will taunt and fight each other. This will take precedence over any other actions unless the Fiends' existence is endangered by a more powerful enemy.


PnP Fiends

Firstly, the elemental resistances, MR, AC, THAC0, saving throws and Hit Dice of all Fiends now match the PnP source material more closely. The code which implements this takes into account unique creatures who might have better values than generic creatures of their kind. For example, the Master of Thralls in the Planar Prison already has a better THAC0 value than a regular Nabassu, so it won't be changed. Secondly, several missing spell-like abilities and weapon properties have been restored (i.e. all Fiends can now use Teleport Without Error at will, Succubi have an energy draining kiss and can become ethereal, Pit Fiends have a venomous bite, Balors wield Vorpal Swords and Flaming Whips...etc). Furthermore, only specific Fiends (i.e. Balors, Mariliths, Gelugons and Glabrezu) can now see through invisibility by default. Other Fiends must use their spell-like abilities to do so, as described by the source material.


Revised Fiend summoning

For compatibility reasons, this component is separate and completely independent from the main PnP Fiends component. As the name suggests, it alters several aspects of the Fiend summoning process. Firstly, summoned Fiends now more closely match their PnP counterparts in terms of behavior, statistics and abilities, as described by the PnP Fiends component. Furthermore, while summoned Fiends still remain uncontrollable, they now match the allegiance of their summoner. This allows the summoner to receive experience points for each opponent that the Fiends defeats, but it also applies the appropriate reputation penalty for each innocent that the Fiend murders. Note: certain Fiends prefers to trick and manipulate innocents into service, rather than killing them outright. Also, the nature of a summoned Fiend now corresponds to the alignment of its summoner. A Baatezu appears if the caster is lawful aligned, while a Tanar'ri appears if the caster is chaotic aligned. If the caster is neither lawful nor chaotic aligned, a Yugoloth appears. Finally, the party now gains XP for killing Fiends summoned by opponents.


Relevant links


The new components are available as of aTweaks v3 which you can download here. Enjoy! :)

Edited by aVENGER, 30 May 2012 - 07:40 PM.


#2 yarpen

yarpen

    Drunken Superhero

  • Member
  • 257 posts

Posted 20 December 2009 - 08:49 AM

Awesome as always. I hope that this component will be compatible with SCS/SR in the meaning that I can use your version without bugs.

#3 Lollorian

Lollorian

    smiley addict

  • Member
  • 4150 posts

Posted 20 December 2009 - 09:27 AM

Very cool idea (although I wonder who'd gate something in the city :P)

I hope that this component will be compatible with SCS/SR in the meaning that I can use your version without bugs.

... especially with SR, since they're modding Gate to make the demons barter with their summoner and stuff :unsure:

Cheers,
Lol

"I am the smiley addict, yellow and round, this is my grin :D when I'm usually around :P.
When there's trouble brewing, see me post, cuz it's usually a wall o' yellow and your eyes are toast!!!"

BWP GUIDE - BWP FIXES - impFAQ - NPC LIST - KIT LIST - AREA LIST

GitHub Links : BWP Fixpack | Lolfixer | BWP Trimpack | RezMod


#4 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 20 December 2009 - 09:40 AM

Thanks for the kind words guys. :)

As far as compatibility goes, it's too early to tell for certain at this development stage. However, I'll definitively try to make compatibility checks for SCSII, Tactics and Spell Revisions. The most likely scenario is that if aTweaks detects any mods that also alter those creatures it won't apply its own changes to them in order to avoid potential conflicts. For example, I certainly don't want to alter the AI of hostile demons that are summoned by SCSII spellcasters.

#5 Jarno Mikkola

Jarno Mikkola

    The Imp in his pink raincoat.

  • Member
  • 10911 posts

Posted 20 December 2009 - 10:57 AM

Very cool idea (although I wonder who'd gate something in the city :P)

I hope that this component will be compatible with SCS/SR in the meaning that I can use your version without bugs.

... especially with SR, since they're modding Gate to make the demons barter with their summoner and stuff :unsure:

As there is no need to skimp on how many spells the mod adds anymore, different spells are the obvious answer here, except for a Sorcerer, but they can use the ShadowKeeper like they have to this day... as they need the 24 less modified spells so they can have the regular spells assigned.

As far as compatibility goes, it's too early to tell for certain at this development stage. However, I'll definitively try to make compatibility checks for SCSII, Tactics and Spell Revisions. The most likely scenario is that if aTweaks detects any mods that also alter those creatures it won't apply its own changes to them in order to avoid potential conflicts. For example, I certainly don't want to alter the AI of hostile demons that are summoned by SCSII spellcasters.

Could you also make an optional component that lets the player gain the different versions of the demons(spell scrolls)... like a same level spells called 'Summon Nabassu', 'Summon Cornugon' instead of a 'Cacofiend' spell that summons a random one, this way the player can decide which ones to summon as they should have different abilities...

Uh, I forgot... this is cool.

Edited by Jarno Mikkola, 21 December 2009 - 02:38 AM.

Deactivated account. The user today is known as The Imp.


#6 Daulmakan

Daulmakan

    Comfortably numb

  • Member
  • 1065 posts

Posted 20 December 2009 - 11:35 AM

Very nice, will enemy-gated fiends yield XP when killed with this?

item_pack.jpg   Drows.jpg

 


#7 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 20 December 2009 - 12:51 PM

Could you also make an optional component that lets the player gain the different versions of the demons(spell scrolls)... like a same level spells called 'Summon Nabassu', 'Summon Pit Fiend' and 'Summon Balor' instead of a 'Gate' spell that summons a random one, this way the player can decide which ones to summon as they should have different abilities...


Theoretically yes, but I never meant to separate the spells like that. For reference, my aforementioned fifty-fifty setup works as follows:

Cacofiend (level 7 spell): Nabassu or Cornugon
Summon Fiend (level 8 spell): Glabrezu or Gelugon
Gate (level 9 spell): Balor or Pit Fiend

Very nice, will enemy-gated fiends yield XP when killed with this?


Yes, but only if they were actually gated by an enemy. OTOH, if a party member gates in a Fiend, and you let it turn hostile and kill it, you'll get no XP. ;)

#8 Daulmakan

Daulmakan

    Comfortably numb

  • Member
  • 1065 posts

Posted 20 December 2009 - 03:28 PM

Theoretically yes, but I never meant to separate the spells like that. For reference, my aforementioned fifty-fifty setup works as follows:

Cacofiend (level 7 spell): Nabassu or Cornugon
Summon Fiend (level 8 spell): Glabrezu or Gelugon
Gate (level 9 spell): Balor or Pit Fiend

I like this setup.

Yes, but only if they were actually gated by an enemy. OTOH, if a party member gates in a Fiend, and you let it turn hostile and kill it, you'll get no XP. ;)

Perfectly fine with me.

I'm running out of awesomes to give out to you. :Bow: :woot:

item_pack.jpg   Drows.jpg

 


#9 Shaitan

Shaitan
  • Member
  • 800 posts

Posted 20 December 2009 - 11:29 PM

So cool. Just brilliant

#10 yarpen

yarpen

    Drunken Superhero

  • Member
  • 257 posts

Posted 21 December 2009 - 04:24 AM

I hope that there will be a solution to overwrite SR's changes, because I'd prefer to use SR with your Revised Fiends. :)

#11 Shaitan

Shaitan
  • Member
  • 800 posts

Posted 21 December 2009 - 04:49 AM

I hope that there will be a solution to overwrite SR's changes, because I'd prefer to use SR with your Revised Fiends. :)

Yeah me too ;)

#12 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 21 December 2009 - 07:34 AM

I hope that there will be a solution to overwrite SR's changes, because I'd prefer to use SR with your Revised Fiends. :)


I could make that happen, but only if Demi and Mike don't mind.

#13 Chevalier

Chevalier

    Knight of the Realms

  • Modder
  • 2405 posts

Posted 21 December 2009 - 08:07 AM

I hope that there will be a solution to overwrite SR's changes, because I'd prefer to use SR with your Revised Fiends. :)


I could make that happen, but only if Demi and Mike don't mind.

If you do please have 2 versions, although I think I like SR I would still a version for standard spells.

I Ride for the King!


a.k.a. Chev


#14 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 21 December 2009 - 08:54 AM

If you do please have 2 versions, although I think I like SR I would still a version for standard spells.


No worries, the "Revised Fiend Summoning Spells" will be a separate (and optional) component.

#15 Demivrgvs

Demivrgvs
  • Member
  • 143 posts

Posted 21 December 2009 - 09:23 AM

I hope that there will be a solution to overwrite SR's changes, because I'd prefer to use SR with your Revised Fiends. :)

I could make that happen, but only if Demi and Mike don't mind.

If you do please have 2 versions, although I think I like SR I would still a version for standard spells.

I wouldn't have anything against it, but I think there's a third solution: having the two things "coexist".

My main doubt is fiends characteristics and abilities, because I don't know the ones you're going to use and I've spent a considerable amount of time implementing and balancing SR's fiends. For example if your fiends are weaker than mine it probably means they are not enough powerful for SR (e.g. a Fallen Deva shouldn't be more powerful than a Pit Fiend, and even a Planetar should find difficult to handle a Glabrezu).

If you feel what I did is fine you could directly create a script for SR fiends instead of overwriting the creatures. Then if you feel ok about it I could credit you and include your work as a standard feature of SR.

Note that I don't touch in-game fiends which are not summoned/gated via spell (though SCS does almost the same of SR for them except for few combat abilities like pit fiend's venomous bite and constricting tail attack), but it would actually be cool to have them match each other (except rare cases of custom fiends).

Here's how glabrezu and pit fiend look like within SR v3, feel free to suggest me changes or improvements.

Glabrezu (17 Hit Dice):
STR 23, DEX 10, CON 21, INT 16, WIS 16, CHA 20; AL Chaotic Evil
HP 190, AC -6, THAC0 -3, Saving Throws 5/5/5/9/5
4 Attacks Per Round, 2d6+15 Piercing Damage (Pincers & Claws +4)

Special Qualities:
True Seeing (each round)
Immune to weapons lower than +2 enchantment
Immune to confusion, fear, poison & stun effects
Electricity Resistance 100%; Acid, Cold & Fire Resistance 50%
Magic Resistance 45%

Special Abilities:
Mirror Image (at will)
Confusion (at will/once each 5 rounds)
Unholy Word (once per day)
Power Word: Blind (once per day)
Teleport Without Error (at will)


Pit Fiend (24 Hit Dice):
STR 24, DEX 18, CON 18, INT 19, WIS 16, CHA 25; AL Lawful Evil
HP 230, AC -10, THAC0 -8, Saving Throws 3/3/3/8/3
5 Attacks Per Round, 2d6+16 Piercing Damage (Claws, Bite & Tail +4)

Combat Abilities (20% chance each):
Disease: creatures struck by a pit fiend's bite attack must save vs. death at -6 or be infected with a vile disease known as devil chills, losing 2 points of strength after an incubation period of 12 hours
Poison: a pit fiend's bite injects a lethal poison which inflicts 20 points of damage on hit, and further 150 points after 1 turn unless a save vs. poison at -6 is made
Constrict: creatures struck by the pit fiend's tail must save vs. death at -6 to avoid being stunned for 1 round

Special Qualities:
Immune to weapons lower than +3 enchantment
Immune to confusion, fear, poison & stun effects
Regeneration: 2hp/round
Fire Resistance 100%; Acid & Cold Resistance 50%; Magic Resistance 65%

Special Abilities:
Improved Invisibility (at will)
Fireball (at will/once each 5 rounds)
Power Word: Stun (at will/once each 5 rounds)
Unholy Word (once per day)
Meteor Swarm (once per day)
Teleport Without Error (at will)


P.S I also noticed you're using IWD animation for Telepot Without Error, cool. I've used it too! ;)

Edited by Demivrgvs, 21 December 2009 - 11:01 AM.


#16 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 21 December 2009 - 11:21 AM

I wouldn't have anything against it, but I think there's a third solution: having the two things "coexist".


Sadly, I don't think that's feasible. See below for details.

My main doubt is fiends characteristics and abilities, because I don't know the ones you're going to use and I've spent a considerable amount of time implementing and balancing SR's fiends. For example if your fiends are weaker than mine it probably means they are not enough powerful for SR (e.g. a Fallen Deva shouldn't be more powerful than a Pit Fiend, and even a Planetar should find difficult to handle a Glabrezu).


I understand that reasoning completely, but it I think it makes your versions are a bit more powerful than mine. ;) For my part, I've tried to stick as close to the 2E books as I could, allowing for some minor liberties when the cRPG format requires it. Here's my Pit Fiend:

Pit Fiend

Rank: Baatezu, Greater
Ability Scores: STR 18/00, DEX 16, CON 16, INT 18, WIS 16, CHA 25
Alignment: Lawful Evil
Base Armor Class: -5
Hit Dice: 13 (104 hp)
Base THAC0: 7
Attacks per Round: 5
Base Damage: 2d4 slashing (enchantment level +5)
On-hit effects: 20% chance that the target becomes infected with a foul disease, losing 4 points of strength until cured (non-cumulative). At the same time, the target must save vs. poison or suffers 8 points of poison damage per second during the next 4 rounds; 20% chance of constricting the target for 2 rounds (save vs. breath to avoid) which prevents movement, negates any dexterity bonus to Armor Class and deals an extra 2d4 points of crushing damage to the target at the start of each round. Large and incorporeal creatures cannot be constricted.
Special Defenses: immune to +2 weapons and below; unaffected by curative magic, fear, charm, sleep, confusion and stun; regeneration 2 hp/round
Resistances: Magic 50%, Fire 100%, Cold 50%, Poison 100%
Saving Throws: 5/7/6/5/8
XP Value: 21,000
At will spell-like abilities: Aura of Fear (automatically activates once per 3 rounds), Detect Invisibility, Improved Invisibility, Fireball, Hold Person, Charm Person, Teleport Without Error
Limited use spell-like abilities: Symbol Pain (1x/day), Wish (1x/encounter)



The main problem is that I implement most of the Fiends' abilities through their AI. So, even though aTweaks doesn't overwrite any existing game resources, it replaces all Fiend scripts with its own custom versions. Therefore, having the two mods which govern summoned Fiends coexist at the same time wouldn't be feasible, one would have to take priority over the other. OTOH, since aTweaks' "Revised Fiend Behavior" component only applies to hostile (non-summoned) Fiends, there shouldn't be any technical problems with having that and SR installed at the same time. :)



P.S I also noticed you're using IWD animation for Telepot Without Error, cool. I've used it too! ;)


Yup, it looks much better. 8) I had introduced it for Dimension Door a while ago so I thought it would be fitting here as well.

Edited by aVENGER, 03 January 2010 - 05:03 AM.


#17 Demivrgvs

Demivrgvs
  • Member
  • 143 posts

Posted 21 December 2009 - 04:56 PM

For my part, I've tried to stick as close to the 2E books as I could, allowing for some minor liberties when the cRPG format requires it. Here's my Pit Fiend, laid out in your format for easy comparison:...

Well, despite the various small differences we've done very similar things. Just so you know though, SCS's fiends have much more HD and hit points (before that I actually used values more similar to yours, but I now prefer our solution), and SCS's fiends special abilities are the same used by SR's fiends.

The main problem is that I implement most of the Fiends' abilities through their AI. So, even though aTweaks doesn't overwrite any existing game resources, it replaces all Fiend scripts with its own custom versions. Therefore, having the two mods which govern summoned Fiends coexist at the same time wouldn't be feasible, one would have to take priority over the other. OTOH, since aTweaks' "Revised Fiend Behavior" component only applies to hostile (non-summoned) Fiends, there shouldn't be any technical problems with having that and SR installed at the same time. :)

Well, I was suggesting a custom script for SR+aTweaks, which uses SR's fiends (statistics and abilities) with your added features (Blood War, rampaging behaviour, ...).

Else simply assigning your scripts to SR's creatures may be a sub-optimal "co-existance". You'd have SR's characteristics and combat abilities, with RR's special abilities, AI and cool features (Blood War, rampaging behaviour, ...).

Just my 2 cents, I'm sure you'll handle the matter egregiously. ;)

#18 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 22 December 2009 - 12:04 AM

Well, I was suggesting a custom script for SR+aTweaks, which uses SR's fiends (statistics and abilities) with your added features (Blood War, rampaging behaviour, ...).


Feel free to borrow those aspects from aTweaks and use them in SR. :) Here's the relevant code:

IF
		!GlobalTimerNotExpired("RR#Taunt","LOCALS")
		See([0.0.DEMONIC.0.0.0.MASK_CHAOTIC])
		!StateCheck(Myself,STATE_INVISIBLE)
THEN
		RESPONSE #40
				SetGlobalTimer("RR#Taunt","LOCALS",12)
				FaceObject(LastSeenBy(Myself))
				DisplayStringHead(LastSeenBy(Myself),@651) // Die Baatezu!
				DisplayStringHead(Myself,@658) // Worthless Tanar'ri, I shall end your petty existence!
		RESPONSE #30
				SetGlobalTimer("RR#Taunt","LOCALS",12)
				FaceObject(LastSeenBy(Myself))
				DisplayStringHead(Myself,@657) // Ahh, the Blood War beckons.
				DisplayStringHead(LastSeenBy(Myself),@653) // In the end... there will be only chaos!
		RESPONSE #30
				SetGlobalTimer("RR#Taunt","LOCALS",12)
				FaceObject(LastSeenBy(Myself))
				DisplayStringHead(LastSeenBy(Myself),@652) // Witness true power!
				DisplayStringHead(Myself,@659) // Bah! You are inferior in every possible way.
END

IF
		!GlobalTimerNotExpired("RR#Taunt","LOCALS")
		!StateCheck(Myself,STATE_INVISIBLE)
		!See([0.0.DEMONIC.0.0.0.MASK_CHAOTIC])
		See([0.HUMANOID.0.INNOCENT])
THEN
		RESPONSE #40
				SetInterrupt(FALSE)
				SetGlobalTimer("RR#Taunt","LOCALS",12)
				FaceObject(LastSeenBy(Myself))
				DisplayStringHead(Myself,@660) // Despair mortal, your time has come!
				DisplayStringHead(LastSeenBy(Myself),@665) // Wha-?! Gods, help me!
				ApplySpellRES("RR#FEAR",LastSeenBy(Myself)) // Fear
				SetInterrupt(TRUE)
		RESPONSE #30
				SetInterrupt(FALSE)
				SetGlobalTimer("RR#Taunt","LOCALS",12)
				FaceObject(LastSeenBy(Myself))
				DisplayStringHead(Myself,@661) // Pathetic creature, you have nothing to offer me but your life.
				DisplayStringHead(LastSeenBy(Myself),@666) // No, please! Aaaaaargh!
				ApplySpellRES("RR#FEAR",LastSeenBy(Myself)) // Fear
				SetInterrupt(TRUE)
		RESPONSE #30
				SetInterrupt(FALSE)
				SetGlobalTimer("RR#Taunt","LOCALS",12)
				FaceObject(LastSeenBy(Myself))
				DisplayStringHead(LastSeenBy(Myself),@667) // Is that a... d-devil?! Run for your lives!
				ApplySpellRES("RR#FEAR",LastSeenBy(Myself)) // Fear
				DisplayStringHead(Myself,@662) // By all means, do try to flee. It's much more entertaining that way!
				SetInterrupt(TRUE)
END

You might also be interested in the "green circled but not controllable" part:

IF
		Die()
		Global("RR#EACheck","LOCALS",1) // Fiend was summoned by an enemy
		Global("RR#XP","LOCALS",0)
THEN
		RESPONSE #100
				SetGlobal("RR#XP","LOCALS",1)
				AddexperienceParty(21000) // Pit Fiend XP value
END

IF
		Global("RR#EACheck","LOCALS",0)
		Allegiance(LastSummonerOf(Myself),EVILCUTOFF)
THEN
		RESPONSE #100
				SetGlobal("RR#EACheck","LOCALS",1)
				Enemy()
				Continue()
END

IF
		Global("RR#EACheck","LOCALS",0)
		Allegiance(LastSummonerOf(Myself),GOODCUTOFF)
THEN
		RESPONSE #100
				SetGlobal("RR#EACheck","LOCALS",2)
				LeaveParty()
				ChangeEnemyAlly(Myself,ALLY)
				DialogueInterrupt(FALSE)
				Continue()
END

IF
		OnCreation()
		Global("RR#EACheck","LOCALS",2)
		!InParty(LastSummonerOf(Myself))
THEN
		RESPONSE #100
				LeaveParty()
				ChangeEnemyAlly(Myself,ALLY)
				DialogueInterrupt(FALSE)
				Continue()
END

IF
		Global("RR#Hostile","LOCALS",1)
		Allegiance(Myself,EVILCUTOFF)
		!See([PC])
THEN
		RESPONSE #100
				SetGlobal("RR#Hostile","LOCALS",0)
				LeaveParty()
				ChangeEnemyAlly(Myself,ALLY)
				DialogueInterrupt(FALSE)
				Continue()
END

IF
		Global("RR#EACheck","LOCALS",2)
		Global("RR#Hostile","LOCALS",0)
		Allegiance(Myself,GOODCUTOFF)
		See([PC])
THEN
		RESPONSE #100
				SetGlobal("RR#Hostile","LOCALS",1)
				Enemy()
				Continue()
END

Edited by aVENGER, 22 December 2009 - 12:09 AM.


#19 aVENGER

aVENGER
  • Modder
  • 1680 posts

Posted 22 December 2009 - 10:48 AM

A few notes on the Fiends' new AI.

As most Fiends are quite intelligent, their scripts were designed to reflect that. For example, a Nabassu won't waste its Death Stealing Gaze and Vampiric Touch on Constructs and Undead, a Cornugon is smart enough to finish off downed Trolls using Produce Flame and a Pit Fiend cornered by an entire party protected from evil might just be desperate enough to cast "Wish -> Breach on all enemies in the area". ;) Also, all Fiends will try to use Teleport Without Error to reach the most vulnerable targets and bypass front-line attackers. Here are a few more screenshots to illustrate the point:


Posted Image
Cornugon vs. Trolls


Posted Image
Pit Fiend vs. Prot. from evil party


Edited by aVENGER, 27 December 2009 - 03:26 AM.


#20 Lollorian

Lollorian

    smiley addict

  • Member
  • 4150 posts

Posted 22 December 2009 - 11:09 AM

Pit Fiend vs. Prot. from evil party

That is just mind-blowingly awesome :woot:

Is it just my eyes or does the demon look too scarletty :P (yeah, I've been spoilt by IA :crying:)

Cheers,
Lol

"I am the smiley addict, yellow and round, this is my grin :D when I'm usually around :P.
When there's trouble brewing, see me post, cuz it's usually a wall o' yellow and your eyes are toast!!!"

BWP GUIDE - BWP FIXES - impFAQ - NPC LIST - KIT LIST - AREA LIST

GitHub Links : BWP Fixpack | Lolfixer | BWP Trimpack | RezMod