Ладно думал я думал и решил тут отпостить простенький скриптик на отрыскивание изначально дисбалансированных фишек вещей и замену их другими, более сбалансированными. Тут заменяются: хаст, трусинг, иммунитеты, фридум. Хорошо для шарда =)
Neverwinter Script Source | //############################################################################// //* Система замены перманентных фишек вещи на более сбалансированные *// //* Копирайт Valleo, созданно "непомню", и все такое в таком духе *// //############################################################################//
//* Эта функциЯ заменЯет старые свойства на новые void NoCheatDeleteAndSetItemProperty(object oItem, itemproperty iItemProperty);
//* ФункциЯ проверЯет, допустимо ли это свойство, и если нет - возвращает FALSE int NoCheatCheckItemProperty(itemproperty iItemProperty);
//* ПроверЯет все свойства вещи поочередно void NoCheatItemProperty(object oItem);
//* Старт системы void NoCheatStarting(object oPC);
//############################################################################//
void NoCheatDeleteAndSetItemProperty(object oItem, itemproperty iItemProperty) { itemproperty iNewItemPropert; int iItemPropertyType = GetItemPropertyType(iItemProperty); int iItemPropertySubType; if(iItemPropertyType == ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS) { iItemPropertySubType = GetItemPropertySubType(iItemProperty); if(iItemPropertySubType == IP_CONST_IMMUNITYMISC_DEATH_MAGIC) { iNewItemPropert = ItemPropertyCastSpell(IP_CONST_CASTSPELL_DEATH_WARD_7, IP_CONST_CASTSPELL_NUMUSES_3_USES_PER_DAY); RemoveItemProperty(oItem,iItemProperty); AddItemProperty(DURATION_TYPE_PERMANENT,iNewItemPropert,oItem); } if(iItemPropertySubType == IP_CONST_IMMUNITYMISC_KNOCKDOWN) { iNewItemPropert = ItemPropertySkillBonus(SKILL_DISCIPLINE,10); RemoveItemProperty(oItem,iItemProperty); AddItemProperty(DURATION_TYPE_PERMANENT,iNewItemPropert,oItem); } if(iItemPropertySubType == IP_CONST_IMMUNITYMISC_CRITICAL_HITS) { iNewItemPropert = ItemPropertySkillBonus(SKILL_TUMBLE,10); RemoveItemProperty(oItem,iItemProperty); AddItemProperty(DURATION_TYPE_PERMANENT,iNewItemPropert,oItem); } } if(iItemPropertyType == ITEM_PROPERTY_HASTE) { iNewItemPropert = ItemPropertyCastSpell(IP_CONST_CASTSPELL_HASTE_5, IP_CONST_CASTSPELL_NUMUSES_3_USES_PER_DAY); RemoveItemProperty(oItem,iItemProperty); AddItemProperty(DURATION_TYPE_PERMANENT,iNewItemPropert,oItem); } if(iItemPropertyType == ITEM_PROPERTY_TRUE_SEEING) { iNewItemPropert = ItemPropertyCastSpell(IP_CONST_CASTSPELL_TRUE_SEEING_9, IP_CONST_CASTSPELL_NUMUSES_3_USES_PER_DAY); RemoveItemProperty(oItem,iItemProperty); AddItemProperty(DURATION_TYPE_PERMANENT,iNewItemPropert,oItem); } if(iItemPropertyType == ITEM_PROPERTY_FREEDOM_OF_MOVEMENT) { iNewItemPropert = ItemPropertyCastSpell(IP_CONST_CASTSPELL_FREEDOM_OF_MOVEMENT_7, IP_CONST_CASTSPELL_NUMUSES_3_USES_PER_DAY); RemoveItemProperty(oItem,iItemProperty); AddItemProperty(DURATION_TYPE_PERMANENT,iNewItemPropert,oItem); } }
int NoCheatCheckItemProperty(itemproperty iItemProperty) { int iDurationType = GetItemPropertyDurationType(iItemProperty); if(iDurationType != DURATION_TYPE_PERMANENT)return FALSE;
int iItemPropertyType = GetItemPropertyType(iItemProperty); if(iItemPropertyType == ITEM_PROPERTY_HASTE) return TRUE; if(iItemPropertyType == ITEM_PROPERTY_TRUE_SEEING) return TRUE; if(iItemPropertyType == ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS) return TRUE; if(iItemPropertyType == ITEM_PROPERTY_FREEDOM_OF_MOVEMENT) return TRUE; return FALSE; }
void NoCheatItemProperty(object oItem) { itemproperty iItemProperty = GetFirstItemProperty(oItem); while(GetIsItemPropertyValid(iItemProperty)) { if(NoCheatCheckItemProperty(iItemProperty) && !GetPlotFlag(oItem)) NoCheatDeleteAndSetItemProperty(oItem, iItemProperty); iItemProperty = GetNextItemProperty(oItem); } }
void NoCheatStarting(object oPC) { object oItem; oItem = GetFirstItemInInventory(oPC); while(oItem != OBJECT_INVALID) { NoCheatItemProperty(oItem); oItem = GetNextItemInInventory(oPC); } int iSlot = 0; for (iSlot; iSlot<14; iSlot++) { oItem = GetItemInSlot(iSlot, oPC); if(GetIsObjectValid(oItem)) NoCheatItemProperty(oItem); } }
//############################################################################//
void main() { object oPC = GetEnteringObject(); //* ну тут что хотите, Я на On Enter модуля NoCheatStarting(oPC); } |
Сообщение отредактировал Twin - Jan 8 2005, 05:57
|