Added Dynamic Warforged model
Added Dynamic Warforged model
This commit is contained in:
@@ -886,7 +886,7 @@
|
||||
882 "Shambling Mound" **** Shambling_Mound ad_shambler **** G F 1 1 1 1 SLOW 1.75 3.5 1 1.8 1 0.9 2.4 H 1 17 1 1 po_shambler 4 9 1 6 1 60 30 stone__head 0 1
|
||||
883 "Shambling Mound: Fungal" **** Shambling_Mound2 ad_shambler2 **** Y F 1 1 1 1 SLOW 1.75 3.5 1 1.8 1 0.9 2.4 H 1 17 1 1 po_shambler 4 9 1 6 1 60 30 stone__head 0 1
|
||||
884 "Shark, Zombie" **** Shark_zombie c_sharkzomb default R S **** 1 1 1 FAST 1.76 2.73 0.6 0.75 1 1.4 2.1 L 0 2 1 1 po_sharkmk 3 9 14 29 1 60 30 head 0 1
|
||||
885 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
885 "(Dynamic Warforged) Azmin / Acidchalk" 16777217 Warforged F default B P 1.3 1 1.2 1.2 NORM 1.65 2.87 0.3 0.7 2.25 0.3 2.1 H 1 4 1 1 po_GolIron 3 9 0 9 1 60 30 head_g 6 1
|
||||
886 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
887 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
888 **** **** USER_RESERVED **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
|
BIN
_content/ratdog_top/race_warforged.ncs
Normal file
BIN
_content/ratdog_top/race_warforged.ncs
Normal file
Binary file not shown.
169
_content/ratdog_top/race_warforged.nss
Normal file
169
_content/ratdog_top/race_warforged.nss
Normal file
@@ -0,0 +1,169 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Warforged Armor Restrictions
|
||||
//:: race_warforged.nss
|
||||
//::///////////////////////////////////////////////
|
||||
/*
|
||||
Handles restrictions on warforged armor-equipping
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Fox
|
||||
//:: Created On: Feb 12, 2008
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_alterations"
|
||||
|
||||
void CreateWarforgedArmor(object oPC)
|
||||
{
|
||||
object oArmor;
|
||||
object oHelm;
|
||||
//object oFeatHide = CreateItemOnObject("prc_wf_feats", oPC);
|
||||
|
||||
if(GetHasFeat(FEAT_IRONWOOD_PLATING, oPC))
|
||||
{
|
||||
oArmor = CreateItemOnObject("prc_wf_woodbody", oPC);
|
||||
oHelm = CreateItemOnObject("prc_wf_helmwood", oPC);
|
||||
}
|
||||
else if(GetHasFeat(FEAT_MITHRIL_PLATING, oPC))
|
||||
{
|
||||
oArmor = CreateItemOnObject("prc_wf_mithbody", oPC);
|
||||
oHelm = CreateItemOnObject("prc_wf_helmmith", oPC);
|
||||
}
|
||||
else if(GetHasFeat(FEAT_ADAMANTINE_PLATING, oPC))
|
||||
{
|
||||
oArmor = CreateItemOnObject("prc_wf_admtbody", oPC);
|
||||
oHelm = CreateItemOnObject("prc_wf_helmadmt", oPC);
|
||||
}
|
||||
else if(GetHasFeat(FEAT_UNARMORED_BODY, oPC))
|
||||
{
|
||||
oArmor = CreateItemOnObject("prc_wf_unacbody", oPC);
|
||||
oHelm = CreateItemOnObject("prc_wf_helmhead", oPC);
|
||||
}
|
||||
else if(GetHasFeat(FEAT_COMPOSITE_PLATING, oPC))
|
||||
{
|
||||
oArmor = CreateItemOnObject("prc_wf_compbody", oPC);
|
||||
oHelm = CreateItemOnObject("prc_wf_helmhead", oPC);
|
||||
}
|
||||
|
||||
SetDroppableFlag(oArmor, FALSE);
|
||||
SetItemCursedFlag(oArmor, TRUE);
|
||||
SetDroppableFlag(oHelm, FALSE);
|
||||
SetItemCursedFlag(oHelm, TRUE);
|
||||
|
||||
// Force equip
|
||||
DelayCommand(1.0, AssignCommand(oPC, ActionEquipItem(oArmor, INVENTORY_SLOT_CHEST)));
|
||||
//DelayCommand(1.0, AssignCommand(oPC, ActionEquipItem(oHelm, INVENTORY_SLOT_HEAD)));
|
||||
}
|
||||
|
||||
void DoWarforgedCheck(object oPC)
|
||||
{
|
||||
//if(!GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)))
|
||||
//AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC, "prc_wf_helmhead"), INVENTORY_SLOT_HEAD));
|
||||
|
||||
if(!GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)))
|
||||
AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC, "prc_wf_unacbody"), INVENTORY_SLOT_CHEST));
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int nEvent = GetRunningEvent();
|
||||
if(DEBUG) DoDebug("race_warforged running, event: " + IntToString(nEvent));
|
||||
|
||||
// Init the PC.
|
||||
object oPC = OBJECT_SELF;
|
||||
object oItem;
|
||||
object oArmor;
|
||||
object oSkin;
|
||||
|
||||
// We aren't being called from any event, instead from EvalPRCFeats
|
||||
if(nEvent == FALSE)
|
||||
{
|
||||
oPC = OBJECT_SELF;
|
||||
int nArmorExists = GetIsObjectValid(GetItemPossessedBy(oPC, "prc_wf_unacbody"))
|
||||
|| GetIsObjectValid(GetItemPossessedBy(oPC, "prc_wf_woodbody"))
|
||||
|| GetIsObjectValid(GetItemPossessedBy(oPC, "prc_wf_mithbody"))
|
||||
|| GetIsObjectValid(GetItemPossessedBy(oPC, "prc_wf_admtbody"))
|
||||
|| GetIsObjectValid(GetItemPossessedBy(oPC, "prc_wf_compbody"));
|
||||
// Hook in the events
|
||||
if(DEBUG) DoDebug("race_warforged: Adding eventhooks");
|
||||
AddEventScript(oPC, EVENT_ONHEARTBEAT, "race_warforged", TRUE, FALSE);
|
||||
//may not be needed, put in just in case(ala HotU start)
|
||||
AddEventScript(oPC, EVENT_ONUNAQUIREITEM, "race_warforged", TRUE, FALSE);
|
||||
|
||||
if(!nArmorExists)
|
||||
{
|
||||
CreateWarforgedArmor(oPC);
|
||||
}
|
||||
}
|
||||
else if(nEvent == EVENT_ONHEARTBEAT)
|
||||
{
|
||||
oSkin = GetPCSkin(oPC);
|
||||
|
||||
if(DEBUG) DoDebug("race_warforged - OnHeartbeat");
|
||||
|
||||
if(GetHasFeat(FEAT_IRONWOOD_PLATING, oPC))
|
||||
{
|
||||
if (!GetHasFeat(FEAT_ARMOR_PROFICIENCY_LIGHT, oPC))
|
||||
{
|
||||
//Add proficiency
|
||||
itemproperty ipIP = ItemPropertyBonusFeat(IP_CONST_FEAT_ARMOR_PROF_LIGHT);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
||||
if(DEBUG) DoDebug("race_warforged - ironwood - adding item property "+ItemPropertyToString(ipIP));
|
||||
}
|
||||
// Force equip
|
||||
oItem = GetItemPossessedBy(oPC, "prc_wf_woodbody");
|
||||
if (oItem != GetItemInSlot(INVENTORY_SLOT_CHEST, oPC))
|
||||
AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));
|
||||
}
|
||||
else if(GetHasFeat(FEAT_MITHRIL_PLATING, oPC))
|
||||
{
|
||||
if (!GetHasFeat(FEAT_ARMOR_PROFICIENCY_LIGHT, oPC))
|
||||
{
|
||||
//Add proficiency
|
||||
itemproperty ipIP = ItemPropertyBonusFeat(IP_CONST_FEAT_ARMOR_PROF_LIGHT);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
||||
if(DEBUG) DoDebug("race_warforged - mithril - adding item property "+ItemPropertyToString(ipIP));
|
||||
}
|
||||
// Force equip
|
||||
oItem = GetItemPossessedBy(oPC, "prc_wf_mithbody");
|
||||
if (oItem != GetItemInSlot(INVENTORY_SLOT_CHEST, oPC))
|
||||
AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));
|
||||
}
|
||||
else if(GetHasFeat(FEAT_ADAMANTINE_PLATING, oPC))
|
||||
{
|
||||
if (!GetHasFeat(FEAT_ARMOR_PROFICIENCY_HEAVY, oPC))
|
||||
{
|
||||
//Add proficiency
|
||||
itemproperty ipIP = ItemPropertyBonusFeat(IP_CONST_FEAT_ARMOR_PROF_HEAVY);
|
||||
IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
||||
if(DEBUG) DoDebug("race_warforged - adamantine - adding item property "+ItemPropertyToString(ipIP));
|
||||
}
|
||||
// Force equip
|
||||
oItem = GetItemPossessedBy(oPC, "prc_wf_admtbody");
|
||||
if (oItem != GetItemInSlot(INVENTORY_SLOT_CHEST, oPC))
|
||||
AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));
|
||||
}
|
||||
else if(GetHasFeat(FEAT_COMPOSITE_PLATING, oPC))
|
||||
{
|
||||
// Force equip
|
||||
oItem = GetItemPossessedBy(oPC, "prc_wf_compbody");
|
||||
if (oItem != GetItemInSlot(INVENTORY_SLOT_CHEST, oPC))
|
||||
AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));
|
||||
}
|
||||
|
||||
// Delay a bit to make sure they are appropriately dressed
|
||||
DelayCommand(0.5f, DoWarforgedCheck(oPC));
|
||||
}
|
||||
else if(nEvent == EVENT_ONUNAQUIREITEM)
|
||||
{
|
||||
if(DEBUG) DoDebug("race_warforged: OnUnAcquire");
|
||||
object oItem = GetModuleItemLost();
|
||||
if(GetStringLeft(GetTag(oItem), 7) == "prc_wf_")
|
||||
{
|
||||
if(DEBUG) DoDebug("Destroying lost warforged stuff");
|
||||
MyDestroyObject(oItem);
|
||||
}
|
||||
|
||||
//recreates armor after 1 second to avoid triggering any infinite loops from HotU-type scripts
|
||||
DelayCommand(1.0, CreateWarforgedArmor(oPC));
|
||||
}
|
||||
}
|
@@ -150,7 +150,7 @@
|
||||
146 Shifter 6 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
147 Changeling 6 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
148 Kalashtar 6 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
149 Warforged 475 **** **** **** **** **** 475 **** **** **** **** **** **** **** **** ****
|
||||
149 Warforged 885 **** **** **** **** **** 885 **** **** **** **** **** **** **** **** ****
|
||||
150 Rakshasa_Zakya 293 **** **** **** **** **** 290 **** **** **** **** **** **** **** **** ****
|
||||
151 Arctic_Dwarf 2 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
152 Gold_Dwarf 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||
|
@@ -150,7 +150,7 @@
|
||||
146 Shifter Er 16828128 16828128 16828129 16828130 16828131 6 0 2 -2 -2 0 0 30 7 RACE_FEAT_SHIFTR 16828190 1 RACIAL_TYPE_SHIFTER 18 7 1 shifter **** **** **** 4 30 3 1 INT
|
||||
147 Changeling Cn 16828186 16828186 16828187 16828188 16828189 6 0 0 0 0 0 0 30 8 RACE_FEAT_CHNGLG 16828190 1 RACIAL_TYPE_CHANGELING 18 8 1 changeling **** **** **** 4 30 3 1 INT
|
||||
148 Kalashtar Ks 16828183 16828183 16828184 16828183 16828185 6 0 0 0 0 0 0 30 145 RACE_FEAT_KALASH 16828190 1 RACIAL_TYPE_KALASHTAR 40 145 1 kalashtar **** **** **** 4 30 3 1 INT
|
||||
149 Warforged Wf 16828201 16828201 16828202 16828201 16828203 475 0 0 0 -2 -2 2 30 4 RACE_FEAT_WARF 16828204 1 RACIAL_TYPE_WARFORGED 5 4 1 warforged **** **** **** 4 30 3 1 INT
|
||||
149 Warforged Wf 16828201 16828201 16828202 16828201 16828203 885 0 0 0 -2 -2 2 30 4 RACE_FEAT_WARF 16828204 1 RACIAL_TYPE_WARFORGED 5 4 1 warforged **** **** **** 4 30 3 1 INT
|
||||
150 Rakshasa_Zakya Rz 16828195 16828196 16828197 16828196 16828198 293 10 4 2 0 2 10 50 4 RACE_FEAT_ZAKYA 16826909 1 RACIAL_TYPE_ZAKYA_RAKSHASA 150 4 1 rakshasa **** 1 **** 4 30 3 1 INT
|
||||
151 Arctic_Dwarf Ad 16826721 16826722 16826723 16826724 16826725 2 4 -2 0 -2 0 2 20 7 RACE_FEAT_ARCDW 8157 1 RACIAL_TYPE_ARC_DWARF 50 7 1 dwarf **** **** **** 4 30 3 1 INT
|
||||
152 Gold_Dwarf Gd 16826726 16826727 16826728 16826729 16826730 0 0 -2 0 0 0 2 20 4 RACE_FEAT_GDWA 8157 1 RACIAL_TYPE_GOLD_DWARF 50 4 1 dwarf **** **** **** 4 30 3 1 INT
|
||||
|
Reference in New Issue
Block a user