Aschbourne_PRC8/_module/nss/_craft_bowyer.nss
GetOffMyYarn 69879d6957 Areas and Fixes
Added CCOH and missing areas
Changed some areas to be craftable,
Fixed some on death issues,
Fixed the Gaurd
2024-08-30 11:38:44 -04:00

868 lines
31 KiB
Plaintext

//#include "_persist_01a"
#include "nw_i0_plot"
#include "aps_include"
void CreateAnObject(string sResource, object oPC, int iStackSize);
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef);
void GetNextItemPossessedBy(object oPC, string sItemTag);
string GetComponent(int iWoodType);
string GetComponentName(int iWoodType);
string CraftLookup(string sResRef, int iWoodType);
void main()
{
object oSelf = OBJECT_SELF;
object oItem = GetInventoryDisturbItem();
object oPC = GetLastDisturbed();
string sTag = GetTag(oItem);
string sSuccess = "";
string sFail = "";
string sItemResRef = "";
string sItemResRefPoor = "";
string sItemResRefExceptional = "";
int iRandom = 0;
int iSuccess = 0;
int iSkillGain = 0;
int iComponent1 = 1;
int iComponent2 = 0;
int iComponent3 = 0;
int iComponent1Stackable = 1;
int iComponent2Stackable = 0;
int iComponent3Stackable = 0;
int iStackSize = 0;
int iWoodType = GetLocalInt(oPC,"iUseThisWood"); // Credit to Lau3 for reporting this spacing error "iUseThis Wood".
int iPenalty = iWoodType*5;
int iDifficulty = 0;
string sComponent1 = "";
string sComponent2 = "";
string sComponent3 = "";
string sComponent1Name = "";
string sComponent2Name = "";
string sComponent3Name = "";
string sComponentResRef = "";
object oTemp = OBJECT_INVALID;
if (GetInventoryDisturbType()== INVENTORY_DISTURB_TYPE_ADDED)
{
// The following 3 lines are to ensure compatability with UOAbigal's Persistent Token System.
// You can replace them with whatever 'no-drop' code you have or comment them out.
string sNoDropFlag = (GetStringLeft(GetTag(oItem),6));
if (sNoDropFlag == "NoDrop" || sNoDropFlag == "TOKEN_"||sNoDropFlag=="_TBOX_")
return;
if (GetBaseItemType(oItem)==BASE_ITEM_LARGEBOX)
{
DestroyObject(oItem);
SendMessageToPC(oPC,"To avoid possible dupe exploits, the container placed in this bag may be destroyed.");
return;
}
// End of compatability portion.
CopyItem(oItem,oPC,TRUE);
DestroyObject(oItem);
FloatingTextStringOnCreature("You can only craft by removing pattern tokens from this station.",oPC,FALSE);
}
if (GetStringLeft(GetResRef(oItem),10)=="flagswitch")
{
if (sTag == "SWITCH_WOOD1") SetLocalInt(oPC,"iUseThisWood",0);
if (sTag == "SWITCH_WOOD2") SetLocalInt(oPC,"iUseThisWood",1);
if (sTag == "SWITCH_WOOD3") SetLocalInt(oPC,"iUseThisWood",2);
if (sTag == "SWITCH_WOOD4") SetLocalInt(oPC,"iUseThisWood",3);
if (sTag == "SWITCH_WOOD5") SetLocalInt(oPC,"iUseThisWood",4);
if (sTag == "SWITCH_WOOD6") SetLocalInt(oPC,"iUseThisWood",5);
if (sTag == "SWITCH_WOOD7") SetLocalInt(oPC,"iUseThisWood",6);
if (sTag == "SWITCH_WOOD8") SetLocalInt(oPC,"iUseThisWood",7);
if (sTag == "SWITCH_WOOD9") SetLocalInt(oPC,"iUseThisWood",8);
if (sTag == "SWITCH_WOOD10") SetLocalInt(oPC,"iUseThisWood",9);
if (sTag == "SWITCH_WOOD11") SetLocalInt(oPC,"iUseThisWood",10);
if (sTag == "SWITCH_WOOD12") SetLocalInt(oPC,"iUseThisWood",11);
if (sTag == "SWITCH_WOOD13") SetLocalInt(oPC,"iUseThisWood",12);
if (sTag == "SWITCH_WOOD14") SetLocalInt(oPC,"iUseThisWood",13);
if (sTag == "SWITCH_WOOD15") SetLocalInt(oPC,"iUseThisWood",14);
if (sTag == "SWITCH_WOOD16") SetLocalInt(oPC,"iUseThisWood",15);
if (sTag == "SWITCH_WOOD17") SetLocalInt(oPC,"iUseThisWood",16);
if (sTag == "SWITCH_WOOD18") SetLocalInt(oPC,"iUseThisWood",17);
if (sTag == "SWITCH_WOOD19") SetLocalInt(oPC,"iUseThisWood",18);
string sWoodMessage = "Switching wood types. now set to "+GetStringLowerCase(GetName(oItem))+".";
FloatingTextStringOnCreature(sWoodMessage,oPC,FALSE);
DestroyObject(oItem);
string sTagSelf = GetTag(oSelf);
AssignCommand(oPC,DoPlaceableObjectAction(oSelf,PLACEABLE_ACTION_USE));
AssignCommand(oPC,DelayCommand(1.5,DoPlaceableObjectAction(GetNearestObjectByTag(sTagSelf,oPC,1),PLACEABLE_ACTION_USE)));
return;
}
if (GetStringLeft(GetResRef(oItem),7)!="pattern") return;
CopyObject(oItem,GetLocation(oPC),OBJECT_SELF,GetTag(oItem));
DestroyObject(oItem);
if (GetLocalInt(OBJECT_SELF,"iAmInUse") != 0)
{
SendMessageToPC(oPC,"You must wait till the current bow or crossbow is completed before starting another.");
return;
}
//int iBowSkill = GetTokenPair(oPC,13,3);
// uses NWN database
//int iBowSkill = GetCampaignInt("UOACraft","iBowSkill",oPC);
//external database
int iBowSkill = GetPersistentInt(oPC,"iBowSkill","UOACraft");
int iBowChance = iBowSkill;
if (iBowChance < 350)
{
iBowChance = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
iBowChance = iBowChance+(GetAbilityScore(oPC,ABILITY_DEXTERITY)*3);
iBowChance = iBowChance+(GetAbilityScore(oPC,ABILITY_WISDOM)*2);
iBowChance = iBowChance*3;
if (iBowChance>350)iBowChance=350;
if (iBowSkill > iBowChance) iBowChance=iBowSkill;
}
// Adjust skill for the penalty for the wood type being used.
iBowChance = iBowChance - iPenalty;
// begin crafting test
if (sTag == "P_SHORTBOW")
{
sSuccess = "You successfully form and shape the wood into a shortbow.";
sFail = "You are unable to shape and form the wood properly, and the shortbow is ruined.";
sItemResRefPoor = CraftLookup("wbwsh002",iWoodType);
sItemResRef = CraftLookup("nw_wbwsh001",iWoodType);
sItemResRefExceptional = CraftLookup("wbwsh003",iWoodType);
sComponent1 = GetComponent(iWoodType);
iComponent1 = 3;
}
if (sTag == "P_LONGBOW")
{
iDifficulty = 400;
sSuccess = "You successfully form and shape the wood into a longbow.";
sFail = "You are unable to shape and form the wood properly, and the longbow is ruined.";
sItemResRefPoor = CraftLookup("wbwln002",iWoodType);
sItemResRef = CraftLookup("nw_wbwln001",iWoodType);
sItemResRefExceptional = CraftLookup("wbwln003",iWoodType);
sComponent1 = GetComponent(iWoodType);
iComponent1 = 6;
}
if (sTag == "P_LIGHTCROSSBOW")
{
iDifficulty = 250;
sSuccess = "You successfully form and shape the wood into a light crossbow.";
sFail = "You are unable to shape and form the wood properly, and the light crossbow is ruined.";
sItemResRefPoor = CraftLookup("wbwxl002",iWoodType);
sItemResRef = CraftLookup("nw_wbwxl001",iWoodType);
sItemResRefExceptional = CraftLookup("wbwxl003",iWoodType);
sComponent1 = GetComponent(iWoodType);
iComponent1 = 4;
}
if (sTag == "P_HEAVYCROSSBOW")
{
iDifficulty = 450;
sSuccess = "You successfully form and shape the wood into a heavy crossbow.";
sFail = "You are unable to shape and form the wood properly, and the heavy crossbow is ruined.";
sItemResRefPoor = CraftLookup("wbwxh002",iWoodType);
sItemResRef = CraftLookup("nw_wbwxh001",iWoodType);
sItemResRefExceptional = CraftLookup("wbwxh003",iWoodType);
sComponent1 = GetComponent(iWoodType);
iComponent1 = 6;
}
sComponent1Name = GetComponentName(iWoodType);
// check for components
if (GetNumItems(oPC,sComponent1) < iComponent1)
{
FloatingTextStringOnCreature("You do not have enough "+sComponent1Name+" to do this.",oPC,FALSE);
return;
}
if (iComponent2 > 0)
{
if (GetNumItems(oPC,sComponent2) < iComponent2)
{
FloatingTextStringOnCreature("You do not have enough "+sComponent2Name+" to do this.",oPC,FALSE);
return;
}
}
if (iComponent3 > 0)
{
if (GetNumItems(oPC,sComponent3) < iComponent3)
{
FloatingTextStringOnCreature("You do not have enough "+sComponent3Name+" to do this.",oPC,FALSE);
return;
}
}
// visual and audio crafting effects
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,12.0));
PlaySound("al_cv_fanlg1");
PlaySound("al_cv_millwheel1");
PlaySound("al_mg_pillrlght1");
DelayCommand(6.0,PlaySound("al_cv_fanlg1"));
DelayCommand(6.0,PlaySound("al_cv_millwheel1"));
DelayCommand(6.0,PlaySound("al_mg_pillrlght1"));
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF,FALSE),OBJECT_SELF,1.0);
DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_WHITE_ORANGE,FALSE),OBJECT_SELF,1.0));
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY,FALSE),OBJECT_SELF,1.0));
DelayCommand(5.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_RED_ORANGE,FALSE),OBJECT_SELF,1.0));
DelayCommand(7.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY,FALSE),OBJECT_SELF,1.0));
DelayCommand(9.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_WHITE_BLUE,FALSE),OBJECT_SELF,1.0));
DelayCommand(11.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY,FALSE),OBJECT_SELF,1.0));
DelayCommand(6.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF,FALSE),OBJECT_SELF,1.0));
// Remove all components
if (iComponent1Stackable != 0)
{
oTemp = GetItemPossessedBy(oPC,sComponent1);
sComponentResRef = GetResRef(oTemp);
iStackSize = GetNumStackedItems(oTemp);
DestroyObject(oTemp);
if (iStackSize < iComponent1)
{
iComponent1 = iComponent1 - iStackSize;
DelayCommand(2.0,GetNextStackedItem(oPC,sComponent1,iComponent1,1,sComponentResRef));
}
else
{
if (iStackSize > iComponent1)
{
iStackSize = iStackSize - iComponent1;
DelayCommand(1.0,CreateAnObject(sComponentResRef,oPC,iStackSize));
}
}
}
else
{
for (iComponent1; iComponent1>0; iComponent1--)
{
GetNextItemPossessedBy(oPC,sComponent1);
}
}
if (sComponent2 != "")
{
if (iComponent2Stackable != 0)
{
oTemp = GetItemPossessedBy(oPC,sComponent2);
sComponentResRef = GetResRef(oTemp);
iStackSize = GetNumStackedItems(oTemp);
DestroyObject(oTemp);
if (iStackSize < iComponent2)
{
iComponent2 = iComponent2 - iStackSize;
DelayCommand(2.0,GetNextStackedItem(oPC,sComponent2,iComponent2,1, sComponentResRef));
}
else
{
if (iStackSize > iComponent2)
{
iStackSize = iStackSize - iComponent2;
DelayCommand(1.0,CreateAnObject(sComponentResRef,oPC,iStackSize));
}
}
}
else
{
for (iComponent2; iComponent2>0; iComponent2--)
{
GetNextItemPossessedBy(oPC,sComponent2);
}
}
}
if (sComponent3 != "")
{
if (iComponent3Stackable != 0)
{
oTemp = GetItemPossessedBy(oPC,sComponent3);
sComponentResRef = GetResRef(oTemp);
iStackSize = GetNumStackedItems(oTemp);
DestroyObject(oTemp);
if (iStackSize < iComponent3)
{
iComponent3 = iComponent3 - iStackSize;
DelayCommand(2.0,GetNextStackedItem(oPC,sComponent3,iComponent3,1, sComponentResRef));
}
else
{
if (iStackSize > iComponent3)
{
iStackSize = iStackSize - iComponent3;
DelayCommand(1.0,CreateAnObject(sComponentResRef,oPC,iStackSize));
}
}
}
else
{
for (iComponent3; iComponent3>0; iComponent3--)
{
GetNextItemPossessedBy(oPC,sComponent3);
}
}
}
iBowChance = iBowChance - iDifficulty;
if (iBowChance <1) iBowChance = 1;
iRandom = Random(1000);
if (iRandom <= iBowChance)
{
iSuccess = 1;
int iSuccess2 = 1;
iBowChance = iBowChance - 50;
if (Random(1000) <= iBowChance) iSuccess2 = iSuccess2+1;
iBowChance = iBowChance-100;
if (Random(1000) <= iBowChance) iSuccess2 = iSuccess2+1;
iBowChance = iBowChance + 150;
if (iSuccess2 == 1)AssignCommand(oPC,DelayCommand(12.0,CreateAnObject(sItemResRefPoor,oPC,1)));
if (iSuccess2 == 2)AssignCommand(oPC,DelayCommand(12.0,CreateAnObject(sItemResRef,oPC,1)));
if (iSuccess2 == 3)AssignCommand(oPC,DelayCommand(12.0,CreateAnObject(sItemResRefExceptional,oPC,1)));
AssignCommand(oPC,DelayCommand(12.0,FloatingTextStringOnCreature(sSuccess,oPC,FALSE)));
if (Random(1000) >= iBowSkill)
{
if (d10(1)+1 >= iBowChance/100) iSkillGain = 1;
}
}
else
{
AssignCommand(oPC,DelayCommand(12.0,FloatingTextStringOnCreature(sFail,oPC,FALSE)));
return;
}
//Ensure no more than 1 skill gain every 10 seconds to avoid token droppage.
if (iSkillGain ==1)
{
if (GetLocalInt(oPC,"iSkillGain")!= 0)
{
iSkillGain = 0;
}
else
{
SetLocalInt(oPC,"iSkillGain",99);
DelayCommand(10.0,SetLocalInt(oPC,"iSkillGain",0));
}
}
if (iSkillGain ==1)
{
string sOldSkill = "";
string sOldSkill2 = "";
iBowSkill++;
sOldSkill2 = IntToString(iBowSkill);
sOldSkill = "."+GetStringRight(sOldSkill2,1);
if (iBowSkill > 9)
{
sOldSkill = GetStringLeft(sOldSkill2,GetStringLength(sOldSkill2)-1)+sOldSkill;
}
else
{
sOldSkill = "0"+sOldSkill;
}
if (iBowSkill <= 1000)
{
//DelayCommand(13.0,SetTokenPair(oPC,13,3,iBowSkill));
//NWN database
//DelayCommand(13.0,SetCampaignInt("UOACraft","iBowSkill",iBowSkill,oPC));
//external database
DelayCommand(13.0,SetPersistentInt(oPC,"iBowSkill",iBowSkill,0,"UOACraft"));
DelayCommand(13.0,SendMessageToPC(oPC,"==================================="));
DelayCommand(13.0,SendMessageToPC(oPC,"Your skill in bowcraft has gone up!"));
DelayCommand(13.0,SendMessageToPC(oPC,"Current bowcraft skill : "+ sOldSkill+"%"));
DelayCommand(13.0,SendMessageToPC(oPC,"==================================="));
if (GetLocalInt(GetModule(),"_UOACraft_XP")!=0) DelayCommand(12.9,GiveXPToCreature(oPC,GetLocalInt(GetModule(),"_UOACraft_XP")));
}
}
SetLocalInt(OBJECT_SELF,"iAmInUse",99);
DelayCommand(14.0,SetLocalInt(OBJECT_SELF,"iAmInUse",0));
//ensure at least 1 respawn 10 minutes after used...
//this is to prevent a broken placeable that is used, with a 'in use' delay
//which would cancel the respawn
if (GetLocalInt(OBJECT_SELF,"iAmSetToRespawn")!=99)
{
SetLocalInt(OBJECT_SELF,"iAmSetToRespawn",99);
DelayCommand(600.0,ExecuteScript("_onclose_clear",OBJECT_SELF));
}
}
void CreateAnObject(string sResource, object oPC, int iStackSize)
{
CreateItemOnObject(sResource,oPC,iStackSize);
return;
}
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef)
{
object oTemp = GetItemPossessedBy(oPC,sItemTag);
int iStackCount = GetNumStackedItems(oTemp);
int iTemp = iCount - iStackCount;
iStackCount = iStackCount-iCount;
DestroyObject(oTemp);
if (iStackCount > 0)
{
SendMessageToPC(oPC,"You should get back "+IntToString(iStackCount));
DelayCommand(1.0,CreateAnObject(sStackResRef,oPC,iStackCount));
}
// this next line *should* recursively call this function if the number of
// stacked items does not meet the required number of items to be destroyed.
if (iTemp > 0) DelayCommand(1.0,GetNextStackedItem(oPC,sItemTag,iTemp, iMode, sStackResRef));
return;
}
void GetNextItemPossessedBy(object oPC, string sItemTag)
{
object oTemp = GetItemPossessedBy(oPC,sItemTag);
DestroyObject(oTemp);
return;
}
string GetComponent(int iWoodType)
{
switch (iWoodType)
{
case 1:{return "WOOD_OLIVE"; break;}
case 2:{return "WOOD_WILLOW"; break;}
case 3:{return "WOOD_PINE"; break;}
case 4:{return "WOOD_FIR"; break;}
case 5:{return "WOOD_MANGROVE"; break;}
case 6:{return "WOOD_CHERRY"; break;}
case 7:{return "WOOD_MAPLE"; break;}
case 8:{return "WOOD_ALMOND"; break;}
case 9:{return "WOOD_HICKORY"; break;}
case 10:{return "WOOD_BIRCH"; break;}
case 11:{return "WOOD_ELDER"; break;}
case 12:{return "WOOD_WALNUT"; break;}
case 13:{return "WOOD_ELM"; break;}
case 14:{return "WOOD_MAHOGANY"; break;}
case 15:{return "WOOD_OAK"; break;}
case 16:{return "WOOD_YEW"; break;}
case 17:{return "WOOD_REDWOOD"; break;}
case 18:{return "WOOD_IRONWOOD"; break;}
default:{return "WOOD_NORMAL"; break;}
}
return "WOOD_NORMAL";
}
string GetComponentName(int iWoodType)
{
switch (iWoodType)
{
case 1:{return "olive branches"; break;}
case 2:{return "willow branches"; break;}
case 3:{return "pine logs"; break;}
case 4:{return "fir logs"; break;}
case 5:{return "mangrove logs"; break;}
case 6:{return "cherry logs"; break;}
case 7:{return "maple logs"; break;}
case 8:{return "almond logs"; break;}
case 9:{return "hickory logs"; break;}
case 10:{return "birch logs"; break;}
case 11:{return "elder logs"; break;}
case 12:{return "walnut logs"; break;}
case 13:{return "elm logs"; break;}
case 14:{return "mahogany logs"; break;}
case 15:{return "oak logs"; break;}
case 16:{return "yew branches"; break;}
case 17:{return "redwood"; break;}
case 18:{return "ironwood"; break;}
default:{return "normal logs"; break;}
}
return "normal logs";
}
string CraftLookup(string sResRef, int iWoodType)
{
switch (iWoodType)
{
case 0:
{
return sResRef;
break;
}
case 1:
{
// Olive Shortbow
if (sResRef=="wbwsh002") return "wbwsh005";
if (sResRef=="nw_wbwsh001") return "wbwsh004";
if (sResRef=="wbwsh003") return "wbwsh006";
// Olive Longbow
if (sResRef=="wbwln002") return "wbwln005";
if (sResRef=="nw_wbwln001") return "wbwln004";
if (sResRef=="wbwln003") return "wbwln006";
// Olive Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl005";
if (sResRef=="nw_wbwxl001") return "wbwxl006";
if (sResRef=="wbwxl003") return "wbwxl033";
// Olive Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh005";
if (sResRef=="nw_wbwxh001") return "wbwxh004";
if (sResRef=="wbwxh003") return "wbwxh006";
break;
}
case 2:
{
// Willow Shortbow
if (sResRef=="wbwsh002") return "wbwsh008";
if (sResRef=="nw_wbwsh001") return "wbwsh007";
if (sResRef=="wbwsh003") return "wbwsh009";
// Willow Longbow
if (sResRef=="wbwln002") return "wbwln008";
if (sResRef=="nw_wbwln001") return "wbwln007";
if (sResRef=="wbwln003") return "wbwln009";
// Willow Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl007";
if (sResRef=="nw_wbwxl001") return "wbwxl004";
if (sResRef=="wbwxl003") return "wbwxl038";
// willow Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh008";
if (sResRef=="nw_wbwxh001") return "wbwxh007";
if (sResRef=="wbwxh003") return "wbwxh009";
break;
}
case 3:
{
// Pine Shortbow
if (sResRef=="wbwsh002") return "wbwsh011";
if (sResRef=="nw_wbwsh001") return "wbwsh010";
if (sResRef=="wbwsh003") return "wbwsh012";
// Pine Longbow
if (sResRef=="wbwln002") return "wbwln011";
if (sResRef=="nw_wbwln001") return "wbwln010";
if (sResRef=="wbwln003") return "wbwln012";
// Pine Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl010";
if (sResRef=="nw_wbwxl001") return "wbwxl009";
if (sResRef=="wbwxl003") return "wbwxl011";
// pine Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh011";
if (sResRef=="nw_wbwxh001") return "wbwxh010";
if (sResRef=="wbwxh003") return "wbwxh012";
break;
}
case 4:
{
// Fir Shortbow
if (sResRef=="wbwsh002") return "wbwsh014";
if (sResRef=="nw_wbwsh001") return "wbwsh013";
if (sResRef=="wbwsh003") return "wbwsh015";
// Fir Longbow
if (sResRef=="wbwln002") return "wbwln014";
if (sResRef=="nw_wbwln001") return "wbwln013";
if (sResRef=="wbwln003") return "wbwln015";
// Fir Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl013";
if (sResRef=="nw_wbwxl001") return "wbwxl012";
if (sResRef=="wbwxl003") return "wbwxl014";
// Fir Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh014";
if (sResRef=="nw_wbwxh001") return "wbwxh013";
if (sResRef=="wbwxh003") return "wbwxh015";
break;
}
case 5:
{
// Mangrove Shortbow
if (sResRef=="wbwsh002") return "wbwsh017";
if (sResRef=="nw_wbwsh001") return "wbwsh016";
if (sResRef=="wbwsh003") return "wbwsh018";
// Mangrove Longbow
if (sResRef=="wbwln002") return "wbwln017";
if (sResRef=="nw_wbwln001") return "wbwln016";
if (sResRef=="wbwln003") return "wbwln018";
// Mangrove Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl016";
if (sResRef=="nw_wbwxl001") return "wbwxl015";
if (sResRef=="wbwxl003") return "wbwxl017";
// Mangrove Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh017";
if (sResRef=="nw_wbwxh001") return "wbwxh016";
if (sResRef=="wbwxh003") return "wbwxh018";
break;
}
case 6:
{
// Cherry Shortbow
if (sResRef=="wbwsh002") return "wbwsh020";
if (sResRef=="nw_wbwsh001") return "wbwsh019";
if (sResRef=="wbwsh003") return "wbwsh021";
// Cherry Longbow
if (sResRef=="wbwln002") return "wbwln020";
if (sResRef=="nw_wbwln001") return "wbwln019";
if (sResRef=="wbwln003") return "wbwln021";
// Cherry Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl019";
if (sResRef=="nw_wbwxl001") return "wbwxl018";
if (sResRef=="wbwxl003") return "wbwxl020";
// Cherry Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh020";
if (sResRef=="nw_wbwxh001") return "wbwxh019";
if (sResRef=="wbwxh003") return "wbwxh021";
break;
}
case 7:
{
// Maple Shortbow
if (sResRef=="wbwsh002") return "wbwsh023";
if (sResRef=="nw_wbwsh001") return "wbwsh022";
if (sResRef=="wbwsh003") return "wbwsh024";
// Maple Longbow
if (sResRef=="wbwln002") return "wbwln023";
if (sResRef=="nw_wbwln001") return "wbwln022";
if (sResRef=="wbwln003") return "wbwln024";
// Maple Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl022";
if (sResRef=="nw_wbwxl001") return "wbwxl021";
if (sResRef=="wbwxl003") return "wbwxl023";
// Maple Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh023";
if (sResRef=="nw_wbwxh001") return "wbwxh022";
if (sResRef=="wbwxh003") return "wbwxh024";
break;
}
case 8:
{
// Almond Shortbow
if (sResRef=="wbwsh002") return "wbwsh026";
if (sResRef=="nw_wbwsh001") return "wbwsh025";
if (sResRef=="wbwsh003") return "wbwsh027";
// Almond Longbow
if (sResRef=="wbwln002") return "wbwln026";
if (sResRef=="nw_wbwln001") return "wbwln025";
if (sResRef=="wbwln003") return "wbwln027";
// Almond Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl025";
if (sResRef=="nw_wbwxl001") return "wbwxl024";
if (sResRef=="wbwxl003") return "wbwxl026";
// Almond Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh026";
if (sResRef=="nw_wbwxh001") return "wbwxh025";
if (sResRef=="wbwxh003") return "wbwxh027";
break;
}
case 9:
{
// Hickory Shortbow
if (sResRef=="wbwsh002") return "wbwsh029";
if (sResRef=="nw_wbwsh001") return "wbwsh028";
if (sResRef=="wbwsh003") return "wbwsh030";
// Hickory Longbow
if (sResRef=="wbwln002") return "wbwln029";
if (sResRef=="nw_wbwln001") return "wbwln028";
if (sResRef=="wbwln003") return "wbwln030";
// Hickory Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl028";
if (sResRef=="nw_wbwxl001") return "wbwxl027";
if (sResRef=="wbwxl003") return "wbwxl029";
// Hickory Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh029";
if (sResRef=="nw_wbwxh001") return "wbwxh028";
if (sResRef=="wbwxh003") return "wbwxh030";
break;
}
case 10:
{
// Birch Shortbow
if (sResRef=="wbwsh002") return "wbwsh032";
if (sResRef=="nw_wbwsh001") return "wbwsh031";
if (sResRef=="wbwsh003") return "wbwsh033";
// Birch Longbow
if (sResRef=="wbwln002") return "wbwln032";
if (sResRef=="nw_wbwln001") return "wbwln031";
if (sResRef=="wbwln003") return "wbwln033";
// Birch Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl031";
if (sResRef=="nw_wbwxl001") return "wbwxl030";
if (sResRef=="wbwxl003") return "wbwxl032";
// Birch Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh032";
if (sResRef=="nw_wbwxh001") return "wbwxh031";
if (sResRef=="wbwxh003") return "wbwxh033";
break;
}
case 11:
{
// Elder Shortbow
if (sResRef=="wbwsh002") return "wbwsh035";
if (sResRef=="nw_wbwsh001") return "wbwsh034";
if (sResRef=="wbwsh003") return "wbwsh036";
// Elder Longbow
if (sResRef=="wbwln002") return "wbwln035";
if (sResRef=="nw_wbwln001") return "wbwln034";
if (sResRef=="wbwln003") return "wbwln036";
// Elder Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl035";
if (sResRef=="nw_wbwxl001") return "wbwxl034";
if (sResRef=="wbwxl003") return "wbwxl036";
// Elder Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh035";
if (sResRef=="nw_wbwxh001") return "wbwxh034";
if (sResRef=="wbwxh003") return "wbwxh036";
break;
}
case 12:
{
// Walnut Shortbow
if (sResRef=="wbwsh002") return "wbwsh038";
if (sResRef=="nw_wbwsh001") return "wbwsh037";
if (sResRef=="wbwsh003") return "wbwsh039";
// Walnut Longbow
if (sResRef=="wbwln002") return "wbwln038";
if (sResRef=="nw_wbwln001") return "wbwln037";
if (sResRef=="wbwln003") return "wbwln039";
// Walnut Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl038";
if (sResRef=="nw_wbwxl001") return "wbwxl037";
if (sResRef=="wbwxl003") return "wbwxl039";
// Walnut Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh038";
if (sResRef=="nw_wbwxh001") return "wbwxh037";
if (sResRef=="wbwxh003") return "wbwxh039";
break;
}
case 13:
{
// Elm Shortbow
if (sResRef=="wbwsh002") return "wbwsh041";
if (sResRef=="nw_wbwsh001") return "wbwsh040";
if (sResRef=="wbwsh003") return "wbwsh042";
// Elm Longbow
if (sResRef=="wbwln002") return "wbwln041";
if (sResRef=="nw_wbwln001") return "wbwln040";
if (sResRef=="wbwln003") return "wbwln042";
// Elm Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl041";
if (sResRef=="nw_wbwxl001") return "wbwxl040";
if (sResRef=="wbwxl003") return "wbwxl042";
// Elm Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh041";
if (sResRef=="nw_wbwxh001") return "wbwxh040";
if (sResRef=="wbwxh003") return "wbwxh042";
break;
}
case 14:
{
// Mahogany Shortbow
if (sResRef=="wbwsh002") return "wbwsh044";
if (sResRef=="nw_wbwsh001") return "wbwsh043";
if (sResRef=="wbwsh003") return "wbwsh045";
// Mahogany Longbow
if (sResRef=="wbwln002") return "wbwln044";
if (sResRef=="nw_wbwln001") return "wbwln043";
if (sResRef=="wbwln003") return "wbwln045";
// Mahogany Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl044";
if (sResRef=="nw_wbwxl001") return "wbwxl043";
if (sResRef=="wbwxl003") return "wbwxl045";
// Mahogany Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh044";
if (sResRef=="nw_wbwxh001") return "wbwxh043";
if (sResRef=="wbwxh003") return "wbwxh045";
break;
}
case 15:
{
// Oak Shortbow
if (sResRef=="wbwsh002") return "wbwsh047";
if (sResRef=="nw_wbwsh001") return "wbwsh046";
if (sResRef=="wbwsh003") return "wbwsh048";
// Oak Longbow
if (sResRef=="wbwln002") return "wbwln047";
if (sResRef=="nw_wbwln001") return "wbwln046";
if (sResRef=="wbwln003") return "wbwln048";
// Oak Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl047";
if (sResRef=="nw_wbwxl001") return "wbwxl046";
if (sResRef=="wbwxl003") return "wbwxl048";
// Oak Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh047";
if (sResRef=="nw_wbwxh001") return "wbwxh046";
if (sResRef=="wbwxh003") return "wbwxh048";
break;
}
case 16:
{
// Yew Shortbow
if (sResRef=="wbwsh002") return "wbwsh050";
if (sResRef=="nw_wbwsh001") return "wbwsh049";
if (sResRef=="wbwsh003") return "wbwsh051";
// Yew Longbow
if (sResRef=="wbwln002") return "wbwln050";
if (sResRef=="nw_wbwln001") return "wbwln049";
if (sResRef=="wbwln003") return "wbwln051";
// Yew Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl050";
if (sResRef=="nw_wbwxl001") return "wbwxl049";
if (sResRef=="wbwxl003") return "wbwxl051";
// Yew Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh050";
if (sResRef=="nw_wbwxh001") return "wbwxh049";
if (sResRef=="wbwxh003") return "wbwxh051";
break;
}
case 17:
{
// Redwood Shortbow
if (sResRef=="wbwsh002") return "wbwsh053";
if (sResRef=="nw_wbwsh001") return "wbwsh052";
if (sResRef=="wbwsh003") return "wbwsh054";
// Redwood Longbow
if (sResRef=="wbwln002") return "wbwln053";
if (sResRef=="nw_wbwln001") return "wbwln052";
if (sResRef=="wbwln003") return "wbwln054";
// Redwood Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl053";
if (sResRef=="nw_wbwxl001") return "wbwxl052";
if (sResRef=="wbwxl003") return "wbwxl054";
// Redwood Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh053";
if (sResRef=="nw_wbwxh001") return "wbwxh052";
if (sResRef=="wbwxh003") return "wbwxh054";
break;
}
case 18:
{
// Ironwood Shortbow
if (sResRef=="wbwsh002") return "wbwsh056";
if (sResRef=="nw_wbwsh001") return "wbwsh055";
if (sResRef=="wbwsh003") return "wbwsh057";
// Ironwood Longbow
if (sResRef=="wbwln002") return "wbwln056";
if (sResRef=="nw_wbwln001") return "wbwln055";
if (sResRef=="wbwln003") return "wbwln057";
// Ironwood Light Crossbow
if (sResRef=="wbwxl002") return "wbwxl056";
if (sResRef=="nw_wbwxl001") return "wbwxl055";
if (sResRef=="wbwxl003") return "wbwxl057";
// Ironwood Heavy Crossbow
if (sResRef=="wbwxh002") return "wbwxh056";
if (sResRef=="nw_wbwxh001") return "wbwxh055";
if (sResRef=="wbwxh003") return "wbwxh057";
break;
}
default:
{
return sResRef;
break;
}
}
return sResRef;
}