Cinco De Mayo Update
Warforged Scouts can take Warforged Juggernaut. Updated PRC8 version number. FEAT_EXTRA_GRANTED_MANEUVER is for Crusaders, not Swordsages. FEAT_EXTRA_GRANTED_MANEUVER now shows all 5 granted maneuvers after 19th lvl. Mirror Image onCastAt script now uses PRCGetCasterLevel() Summon Hamatula now uses PRCGetCasterLevel() Spiritual Weapon now uses PRCGetCasterLevel() Heal & Harm now SignalEvent on placeables. DEITY$ only knows how many modules this broke. Updated human readable changelog. Added current list of PRC8 additions.
This commit is contained in:
161
PRC8 Additions.txt
Normal file
161
PRC8 Additions.txt
Normal file
@@ -0,0 +1,161 @@
|
||||
CLASSES / PRESTIGE CLASSES
|
||||
Fochlucan Lyrist
|
||||
Verdant Lord
|
||||
Lion of Talisid
|
||||
|
||||
RACIAL TYPES
|
||||
Nezumi (OA)
|
||||
Korobokuru (OA)
|
||||
Warforged Scout (Eberron)
|
||||
Shyft (Planescape)
|
||||
Maeluth (Planescape)
|
||||
Mechanatrix (Planescape)
|
||||
Wispling (Planescape)
|
||||
|
||||
TEMPLATES
|
||||
Baelnorn template
|
||||
|
||||
DOMAINS
|
||||
Chaos
|
||||
Glory
|
||||
Law
|
||||
Luck
|
||||
Madness
|
||||
Mind
|
||||
Moon
|
||||
|
||||
FEATS
|
||||
Combat Focus
|
||||
Combat Awareness
|
||||
Combat Stability
|
||||
Combat Defense
|
||||
Combat Vitality
|
||||
Combat Strike
|
||||
Choke Hold
|
||||
Pain Touch
|
||||
Ki Shout
|
||||
Great Ki Shout
|
||||
Freezing the Lifeblood
|
||||
Falling Star Strike
|
||||
Unbalancing Strike
|
||||
Plant Defiance
|
||||
Plant Control
|
||||
Favored of the Companions
|
||||
Create Infusion
|
||||
Magical Artisan: Create Infusion
|
||||
Craft Scepter
|
||||
Magical Artisan: Craft Scepter
|
||||
Improved Critical (touch attack)
|
||||
Improved Critical (ray)
|
||||
Weapon Focus (touch attack)
|
||||
Epic Weapon Focus (touch attack)
|
||||
|
||||
Builder / System Feats
|
||||
Intrinsic Armor
|
||||
Intrinsic Weapon
|
||||
|
||||
SPELLS
|
||||
Control Plants
|
||||
Forestfold
|
||||
Creeping Cold
|
||||
Greater Creeping Cold
|
||||
Immunity from Elements
|
||||
Adrenaline Surge
|
||||
Regeneration Line
|
||||
Regenerate Ring
|
||||
Regenerate Circle
|
||||
Summoning
|
||||
Summon Nature<72>s Ally I<>IX
|
||||
Leonal<EFBFBD>s Roar
|
||||
Repair Damage (spell line)
|
||||
|
||||
PSIONICS
|
||||
Defensive Manifestation
|
||||
|
||||
INFUSIONS
|
||||
Armor Enhancement (Lesser / Standard / Greater)
|
||||
Resistance Item
|
||||
Weapon Augmentation (Lesser / Standard / Personal)
|
||||
|
||||
CRAFTING SYSTEMS / ECONOMY
|
||||
Create Infusion crafting system
|
||||
Scepter crafting system
|
||||
Offline PnP magical crafting system
|
||||
|
||||
Craftable Items
|
||||
Aroma of Death
|
||||
Beetle Elixir
|
||||
Harness of Armor
|
||||
|
||||
New Base Item Types
|
||||
Crafted Vial
|
||||
Mundane Herb
|
||||
Infused Herb
|
||||
Mundane Scepter
|
||||
Enchanted Scepter
|
||||
|
||||
Materials
|
||||
Botanical material
|
||||
Glassteel
|
||||
|
||||
SYSTEMS / GAMEPLAY MECHANICS
|
||||
Scrying System Overhaul
|
||||
Area-blocked scrying variables
|
||||
Source-blocked scrying variables
|
||||
Unified handling across spells/powers
|
||||
Player Appearance System
|
||||
Runtime player model swapping via racialappear.2da
|
||||
|
||||
Spell Systems
|
||||
Spell Cancellation system
|
||||
Spell Effect Viewer system
|
||||
Spell Duration tracking UI
|
||||
|
||||
Summoning / Scaling
|
||||
LevelUpSummon() system
|
||||
Summon scaling framework (HD/class scaling)
|
||||
|
||||
Combat / Mechanics
|
||||
Grapple removes invisibility rule enforcement
|
||||
Double chakra bind system (Incarnum expansion)
|
||||
Double totem bind system
|
||||
|
||||
UI / NUI SYSTEMS
|
||||
NUI Spellcasting system
|
||||
NUI Spell Effect Viewer
|
||||
NUI Spell Duration Viewer
|
||||
NUI Level-up spell selector
|
||||
Power Attack GUI system
|
||||
prc_onplayergui event system
|
||||
NUI event dispatch framework
|
||||
|
||||
FRAMEWORKS / BACKEND SYSTEMS
|
||||
JSON / Data Systems
|
||||
JSON summoning support library
|
||||
JSON spell/creature handling utilities
|
||||
NWNx / PRCX Integration
|
||||
Optional PRCX shim system / NWNxEE compatibility layer
|
||||
|
||||
SCRIPTING / ENGINE UTILITIES (NEW FUNCTIONS)
|
||||
GenerateRandomName()
|
||||
GetIsAlchemical()
|
||||
VectorToPerpendicular()
|
||||
GetCurrentUnixTimestamp()
|
||||
LevelUpSummon()
|
||||
json_GetFirstKnownSpell()
|
||||
json_GetNextKnownSpell()
|
||||
GetHealerCompanionBonus()
|
||||
CelestialTemplateEffects()
|
||||
MakeCelestialCreatureFromTemplate()
|
||||
|
||||
Item Properties
|
||||
Expanded Damage Resistance tiers
|
||||
Material-based crafting properties
|
||||
Quality-based item properties
|
||||
|
||||
OTHER SYSTEMS / FEATURES
|
||||
DM character inspection tool (view templates/effects)
|
||||
Spell effect click-to-inspect system
|
||||
PRC options system expansions (player toggles)
|
||||
Dynamic conversation system expansions
|
||||
Summon AI/stat scaling improvements
|
||||
3645
PRC8_ChangeLog.txt
3645
PRC8_ChangeLog.txt
File diff suppressed because it is too large
Load Diff
@@ -3,8 +3,9 @@
|
||||
LABEL ReqType ReqParam1 ReqParam2
|
||||
0 Warforged RACE 149 ****
|
||||
1 WarforgedCharger RACE 145 ****
|
||||
2 ScriptVar VAR PRC_AllowJuggernaut 0
|
||||
3 Base_Attack BAB 5 ****
|
||||
4 AdamantineBody_WarForged FEAT 4781 ****
|
||||
5 PowerAtk FEAT 28 ****
|
||||
6 ImprovedBullrush FEAT 2806 ****
|
||||
2 WarforgedScout RACE 144 ****
|
||||
3 ScriptVar VAR PRC_AllowJuggernaut 0
|
||||
4 Base_Attack BAB 5 ****
|
||||
5 AdamantineBody_WarForged FEAT 4781 ****
|
||||
6 PowerAtk FEAT 28 ****
|
||||
7 ImprovedBullrush FEAT 2806 ****
|
||||
|
||||
@@ -1066,7 +1066,7 @@ void spellsDispelAoE(object oTargetAoE, object oCaster, int nCasterLevel)
|
||||
}
|
||||
|
||||
|
||||
nChance += ((nCasterLevel + (GetAbilityScoreForClass(nClassCaster, oCaster)-10)/2) - (GetCasterLevel(oCreator))); // yes this is a sucky stupid hack
|
||||
nChance += ((nCasterLevel + (GetAbilityScoreForClass(nClassCaster, oCaster)-10)/2) - (PRCGetCasterLevel(oCreator))); // yes this is a sucky stupid hack
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// the AI does cheat here, because it can not react as well as a player to
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
/* This variable MUST be updated with every new version of the PRC!!! */
|
||||
|
||||
const string PRC_VERSION = "PRC8 4.89";
|
||||
const string PRC_VERSION = "PRC8 4.91";
|
||||
|
||||
/* This variable MUST be updated every time 'assemble_spellbooks.bat' is run!!! */
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ int GetMaxReadiedCount(object oPC, int nList)
|
||||
int nMaxReadied = StringToInt(Get2DACache(GetAMSKnownFileName(nList), "ManeuversReadied", nLevel-1));
|
||||
// Add in the custom modifier
|
||||
nMaxReadied += GetReadiedManeuversModifier(oPC, nList);
|
||||
if(nList == MANEUVER_LIST_SWORDSAGE)
|
||||
if(nList == MANEUVER_LIST_CRUSADER)
|
||||
nMaxReadied += GetHasFeat(FEAT_EXTRA_GRANTED_MANEUVER, oPC);
|
||||
|
||||
if(DEBUG) DoDebug("tob_inc_recovery: MaxManeuvers Readied: " +IntToString(nMaxReadied));
|
||||
@@ -398,16 +398,30 @@ void GrantRandomManeuver(object oPC, int nList = MANEUVER_LIST_CRUSADER)
|
||||
SetLocalInt(oPC, "ManeuverGranted" + IntToString(i), nMoveId);
|
||||
}
|
||||
|
||||
void ListGrantedManeuvers(object oPC)
|
||||
void ListGrantedManeuvers(object oPC)
|
||||
{
|
||||
int i;
|
||||
int nMaxGranted = StringToInt(Get2DACache(GetAMSKnownFileName(MANEUVER_LIST_CRUSADER), "ManeuversGranted", GetLevelByClass(CLASS_TYPE_CRUSADER, oPC)-1));
|
||||
nMaxGranted += GetHasFeat(FEAT_EXTRA_GRANTED_MANEUVER, oPC);
|
||||
|
||||
for(i = 1; i <= nMaxGranted; i++)
|
||||
{
|
||||
int nMoveId = GetLocalInt(oPC, "ManeuverGranted" + IntToString(i));
|
||||
int nExpended = GetIsManeuverExpended(oPC, MANEUVER_LIST_CRUSADER, nMoveId);
|
||||
if (nMoveId > 0 && !nExpended) FloatingTextStringOnCreature(GetManeuverName(nMoveId) + " is granted", oPC, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
/* void ListGrantedManeuvers(object oPC)
|
||||
{
|
||||
int i;
|
||||
for(i = 1; i <= 4; i++)
|
||||
for(i = 1; i <= 5; i++)
|
||||
{
|
||||
int nMoveId = GetLocalInt(oPC, "ManeuverGranted" + IntToString(i));
|
||||
int nExpended = GetIsManeuverExpended(oPC, MANEUVER_LIST_CRUSADER, nMoveId);
|
||||
if (nMoveId > 0 && !nExpended) FloatingTextStringOnCreature(GetManeuverName(nMoveId) + " is granted", oPC, FALSE);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
void GrantManeuvers(object oPC, int nList = MANEUVER_LIST_CRUSADER)
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@ void main()
|
||||
|
||||
// Get the caster of the potential dispel
|
||||
object oCaster = GetLastSpellCaster();
|
||||
int nCasterLevel = GetCasterLevel(oCaster);
|
||||
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
||||
|
||||
if(DEBUG) DoDebug("mirror_image_sa: EVENT_NPC_ONSPELLCASTAT triggered.");
|
||||
|
||||
@@ -33,10 +33,10 @@ void main()
|
||||
// Ensure oOriginalCaster is valid
|
||||
if (GetIsObjectValid(oOriginalCaster))
|
||||
{
|
||||
if(DEBUG) DoDebug("mirror_image_sa: Original caster found. Caster level: " + IntToString(GetCasterLevel(oOriginalCaster)));
|
||||
if(DEBUG) DoDebug("mirror_image_sa: Original caster found. Caster level: " + IntToString(PRCGetCasterLevel(oOriginalCaster)));
|
||||
|
||||
// Determine the DC for the dispel check
|
||||
int nDispelDC = 11 + GetCasterLevel(oOriginalCaster);
|
||||
int nDispelDC = 11 + PRCGetCasterLevel(oOriginalCaster);
|
||||
if(DEBUG) DoDebug("mirror_image_sa: Dispel DC: " + IntToString(nDispelDC));
|
||||
|
||||
// Determine the maximum cap for the dispel check
|
||||
|
||||
@@ -17,7 +17,7 @@ void main()
|
||||
{
|
||||
//Declare major variables
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
int nDuration = GetCasterLevel(OBJECT_SELF);
|
||||
int nDuration = PRCGetCasterLevel(OBJECT_SELF);
|
||||
object oPC = OBJECT_SELF;
|
||||
effect eSummon = EffectSummonCreature("NW_DMVROCK");
|
||||
if(GetPRCSwitch(MARKER_PRC_COMPANION))
|
||||
|
||||
@@ -83,6 +83,12 @@ int DoSpell(object oCaster, object oTarget, int nSpellID)
|
||||
{
|
||||
if(bMass) fDelay = PRCGetRandomDelay();
|
||||
int iTombTainted = GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD;
|
||||
|
||||
// Signal placeables even if they're not creatures
|
||||
if(GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE)
|
||||
{
|
||||
SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID, FALSE));
|
||||
}
|
||||
|
||||
iHeal = GetObjectType(oTarget) == OBJECT_TYPE_CREATURE &&
|
||||
((!bIsHeal && (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD || iTombTainted)) ||
|
||||
|
||||
@@ -83,7 +83,7 @@ void main()
|
||||
{
|
||||
// Get the caster of the spell
|
||||
object oCaster = GetLastSpellCaster();
|
||||
int nCasterLevel = GetCasterLevel(oCaster);
|
||||
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
||||
|
||||
if(DEBUG) DoDebug("sp_spiritweapon: EVENT_NPC_ONSPELLCASTAT triggered.");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user