Aller au contenu

Photo

Opinion poll: Should wizards be able to summon unlimited creatures?


  • Veuillez vous connecter pour répondre
11 réponses à ce sujet

#1
M. Rieder

M. Rieder
  • Members
  • 2 530 messages
Currently a Wizard or similar spellcaster can only summon one creature at a time.  Would you enjoy a module in which a Wizard could summon as many creatures as he/she had spells memorized? 

#2
kamal_

kamal_
  • Members
  • 5 260 messages
Why not, there's even mods on the vault already to do that.

#3
painofdungeoneternal

painofdungeoneternal
  • Members
  • 1 799 messages
Yes it's something that works, can't really be a conjuror without being able to make an army.

This is my system for it Monster Summoning 2.0 which is very configurable. I actually have code implemented for the various methods of implementing this ( there is more than one approach ). I wanted something which works for a PW, but allows the admin to be able to set up custom lists of creature blueprints based on god, class, or just by character name.

Sea of Dragons is using it, as well as my own PW.

#4
Arkalezth

Arkalezth
  • Members
  • 3 195 messages
Yes, but the title may be misleading.

#5
PJ156

PJ156
  • Members
  • 2 988 messages
Are we talking multiple use of spells to summoning single creatures or a spell which summons multiple creatures. It's been a while but did the original summons not allow for an aggregate of hit dice so you could get 4 HD1 or 1 HD4. Or am I showing my age?

PJ

Modifié par PJ156, 02 septembre 2011 - 05:44 .


#6
Failed.Bard

Failed.Bard
  • Members
  • 774 messages
I wouldn't recommend allowing unlimited summons unless you set the durations to the book values at the same time. A 12th level sorc could easily have 30+ minions running around for 24 hours at a time if you do one without the other.
That said, I use henchman based summons as well, with my little mods limit set at 8. It can be a good option, but you have to be really careful in keeping it balanced.

Edit:  Heh, and I wasn't paying attention to the forum apparently, thought it was a NWN 1 question.  Still, the issue of finding a proper balance is the same in both games.

Modifié par Failed.Bard, 02 septembre 2011 - 05:34 .


#7
Arkalezth

Arkalezth
  • Members
  • 3 195 messages
PJ, it doesn't work like that in the (vanilla) game. So I guess it's your age.:P But I've seen a PW where you can summon several ones as you describe, there must be some mod on the Vault for that.

I believe, though, that you can have, at the same time, a familiar and an animal companion. And maybe a summon from a spell too? (Not that this would be useful for a pure wizard, nor that familiars were good in combat...).

Modifié par Arkalezth, 02 septembre 2011 - 05:45 .


#8
Quixal

Quixal
  • Members
  • 1 793 messages

Arkalezth wrote...

PJ, it doesn't work like that in the (vanilla) game. So I guess it's your age.:P

I suspect he was talking about the pen and paper game. It does work like that there. In terms of crpgs, I think it also worked like that in ToEE.

I would appreciate there being a point in playing a summon focused spellcaster. As has been said, there would have to be some limits in place though. A shortened duration or perhaps level based cap on how many you can have out at one time would work.

#9
painofdungeoneternal

painofdungeoneternal
  • Members
  • 1 799 messages
You keep track of total hit dice summoned, which becomes an overall limit at any given time. You also can cast multiple spells, and only when you run over your hit dice do the oldest summons disappear, or you lose control and they attack you, depending on the rules. I've got some nasty combos, where you summon inside a desecrated area, end up with demonic type summons which might attack you if you don't have protection from evil.

1d4+1 or spells 2 levels lower ( using a ninth level spell gives you one 9th level tabel creature, 8th gives you 1-3 8th level creatures, and 7th gives you 1d4+1 of any choice of creatures below that ( limited by the 5 radial options. ) The spells.2da setup is needed to handle radial choices, and work arounds have to be made to make creatures under the control of the caster, but still act correctly with related spells, so opponents can dispel them, banish them, dominate them, or the caster can dismiss them one by one if desired.

There are a few implementations on the vault, and the things that work in NWN1 also work in NWN2. I would look at my link i provided, it has examples of code, and features which allow implementation of PNP style summoning, and variant rules.

#10
Arkalezth

Arkalezth
  • Members
  • 3 195 messages
A level cap sounds good if that can be done.

#11
M. Rieder

M. Rieder
  • Members
  • 2 530 messages
Thanks for the comments. I have always been bothered by the limit of 1 summon. I remember the heyday of baldur's gate when I would unleash my skeletal armies upon hapless foes. I'll check out that link you provided, pain.

#12
painofdungeoneternal

painofdungeoneternal
  • Members
  • 1 799 messages
Examples of hit dice management

// this is used to maintain totals of summons and the like
int SCSummonRemoveIfMoreThanHitDice(object oPC, int iMaxHitDice )
{
	int nCnt = 0;
	if (GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC)==OBJECT_INVALID) 
	{
		return 0;
	}
	
	object oArea = GetArea(oPC);
	object oSummon = GetFirstObjectInArea(oArea);
	while (GetIsObjectValid(oSummon))
	{
		if (GetObjectType(oSummon)==OBJECT_TYPE_CREATURE)
		{
			
			if ( GetLocalObject(oSummon, "MASTER" ) ==  oPC )
			{   //if (GetMaster(oSummon)==oPC && CSLGetIsUndead( oSummon ) ) {
				nCnt += GetHitDice(oSummon);
				if ( nCnt > iMaxHitDice )
				{
					SCSummonRemove( oSummon );
				}
			}
		}
		oSummon = GetNextObjectInArea(oArea);
	}
	return nCnt;
}



// this is used to maintain totals of summons and the like
int SCSummonCountHitDice(object oPC)
{
	int nCnt = 0;
	if (GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC)==OBJECT_INVALID) 
	{
		return 0;
	}
	
	object oArea = GetArea(oPC);
	object oSummon = GetFirstObjectInArea(oArea);
	while (GetIsObjectValid(oSummon))
	{
		if (GetObjectType(oSummon)==OBJECT_TYPE_CREATURE)
		{
			
			if ( GetLocalObject(oSummon, "MASTER" ) ==  oPC )
			{   //if (GetMaster(oSummon)==oPC && CSLGetIsUndead( oSummon ) ) {
				nCnt += GetHitDice(oSummon);
			}
		}
		oSummon = GetNextObjectInArea(oArea);
	}
	return nCnt;
}

// this is used to maintain totals of summons and the like
int SCSummonCount(object oPC)
{
	int nCnt = 0;
	if (GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC)==OBJECT_INVALID) 
	{
		return 0;
	}
	
	object oArea = GetArea(oPC);
	object oSummon = GetFirstObjectInArea(oArea);
	while (GetIsObjectValid(oSummon))
	{
		if (GetObjectType(oSummon)==OBJECT_TYPE_CREATURE)
		{
			
			if ( GetLocalObject(oSummon, "MASTER" ) ==  oPC )
			{   //if (GetMaster(oSummon)==oPC && CSLGetIsUndead( oSummon ) ) {
				nCnt++;
			}
		}
		oSummon = GetNextObjectInArea(oArea);
	}
	return nCnt;
}

implemented as follows in last line
void SCSummonCreature( object oCaster, string sSummoningTable, int iSummonLevel, int iPowerLevel, float fDuration, location lSummonLocation, int iMainSpellId = -1, int iSummonColumn = -1, int iSummonControlType = -1)
{	
	//SendMessageToPC( GetFirstPC(), "sSummoningTable="+sSummoningTable+" iSummonLevel="+IntToString(iSummonLevel)+" iPowerLevel="+IntToString(iPowerLevel)+" fDuration="+FloatToString(fDuration)+" iMainSpellId="+IntToString(iMainSpellId)+" iSummonColumn="+IntToString(iSummonColumn) );
	if (DEBUGGING >= 1) { CSLDebug( "sSummoningTable="+sSummoningTable+" iSummonLevel="+IntToString( iSummonLevel )+"  iPowerLevel="+IntToString(iPowerLevel), oCaster, OBJECT_INVALID, "LightSlateGray" ); }
	
	object oSD = SCSummonsGetDataObject();
	SCCheckSummonTable( sSummoningTable );
	
	int iclass = GetLocalInt( oCaster, "HKTEMP_class" )-1;
	
	if ( iclass == class_TYPE_DRUID && SCSummonGetIsAshboundSpell( iMainSpellId ) && GetHasFeat(FEAT_ASHBOUND, oCaster) )
	{
		fDuration = fDuration * 2;
	}
	
	int iMaxAllowedSummons = ( HkGetBestCasterLevel( oCaster )*4 )-( iSummonLevel*2 );
	// remove prior to casting the spell, so it removes previous summons only...subtracts summonlevel times 2 to make room for new summons
	SCSummonRemoveIfMoreThanHitDice(oCaster, iMaxAllowedSummons );