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.
71 lines
2.4 KiB
Plaintext
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;
|
|
}
|