Battledale_PRC8/_module/nss/stx_cr_cancw.nss
Jaysyn904 7b9e44ebbb Initial upload
Initial upload.  PRC8 has been added.  Module compiles, PRC's default AI & treasure scripts have been integrated.  Started work on top hak for SLA / Ability / Scripting modifications.
2024-03-11 23:44:08 -04:00

71 lines
2.4 KiB
Plaintext

#include "stx_inc_craft"
int StartingConditional() {
object oPC = GetPCSpeaker();
if (!GetHasSkill(SKILL_CRAFT_WEAPON, oPC))
return FALSE;
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
if (!GetIsObjectValid(oWeapon) || GetPlotFlag(oWeapon) || IPGetIsIntelligentWeapon(oWeapon)
|| !(IPGetIsMeleeWeapon(oWeapon) || IPGetIsRangedWeapon(oWeapon)))
return FALSE;
if (GetIsDM(oPC)) return TRUE;
object oNPC = GetLocalObject(oPC, "STX_CR_NPC");
if (GetIsObjectValid(oNPC)) {
if (GetTag(oNPC) != STX_CR_SMITH_NPC)
return FALSE;
} else if (STX_CR_REQUIRE_PLACEABLE) {
int iType = GetBaseItemType(oWeapon);
string sRequiredPlaceable;
switch (iType) {
case BASE_ITEM_BASTARDSWORD:
case BASE_ITEM_BATTLEAXE:
case BASE_ITEM_DAGGER:
case BASE_ITEM_DIREMACE:
case BASE_ITEM_DOUBLEAXE:
case BASE_ITEM_DWARVENWARAXE:
case BASE_ITEM_GREATAXE:
case BASE_ITEM_GREATSWORD:
case BASE_ITEM_HALBERD:
case BASE_ITEM_HEAVYFLAIL:
case BASE_ITEM_KAMA:
case BASE_ITEM_KATANA:
case BASE_ITEM_KUKRI:
case BASE_ITEM_LIGHTFLAIL:
case BASE_ITEM_LIGHTHAMMER:
case BASE_ITEM_LIGHTMACE:
case BASE_ITEM_LONGSWORD:
case BASE_ITEM_MORNINGSTAR:
case BASE_ITEM_RAPIER:
case BASE_ITEM_SCIMITAR:
case BASE_ITEM_SCYTHE:
case BASE_ITEM_SHORTSPEAR:
case BASE_ITEM_SHORTSWORD:
case BASE_ITEM_SICKLE:
case BASE_ITEM_THROWINGAXE:
case BASE_ITEM_TWOBLADEDSWORD:
case BASE_ITEM_WARHAMMER: sRequiredPlaceable = STX_CR_METAL_PLACEABLE; break;
case BASE_ITEM_CLUB:
case BASE_ITEM_HEAVYCROSSBOW:
case BASE_ITEM_LIGHTCROSSBOW:
case BASE_ITEM_LONGBOW:
case BASE_ITEM_MAGICSTAFF:
case BASE_ITEM_QUARTERSTAFF:
case BASE_ITEM_SHORTBOW:
case BASE_ITEM_SLING:
case BASE_ITEM_WHIP: sRequiredPlaceable = STX_CR_WOOD_PLACEABLE; break;
}
object oRequiredPlaceable = GetNearestObjectByTag(sRequiredPlaceable, oPC);
if (GetArea(oPC) != GetArea(oRequiredPlaceable) || GetDistanceBetween(oPC, oRequiredPlaceable) > STX_CR_REQUIRED_DISTANCE)
return FALSE;
}
return TRUE;
}