Aschbourne_PRC8/_module/nss/_open_anvil.nss
Jaysyn904 5d27edafba Major update
Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system.  Added PC deleter.  Added ACP 4.1.  Full compile.  Updated release archive.
2024-09-16 23:40:48 -04:00

141 lines
8.5 KiB
Plaintext

//#include "_persist_01a"
void main()
{
object oPC = GetLastOpenedBy();
//int iSmithSkill = GetTokenPair(oPC,13,4); // Weaponsmith
int iSmithSkill = GetCampaignInt("UOACraft","iSmithSkill",oPC);
int iSmithChance = iSmithSkill;
//int iArmorSkill = GetTokenPair(oPC,13,5); // ArmorCraft
int iArmorSkill = GetCampaignInt("UOACraft","iArmorSkill",oPC);
int iArmorChance = iArmorSkill;
int iIngotType = GetLocalInt(oPC,"iUseIngotType");
int iIngotMod = iIngotType*25;
if (GetItemPossessedBy(oPC,"NoDrop_SkillLogBook")==OBJECT_INVALID)
{
CreateItemOnObject("skilllogbook",oPC,1);
}
if (iSmithChance < 350)
{
iSmithChance = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
iSmithChance = iSmithChance+(GetAbilityScore(oPC,ABILITY_DEXTERITY)*3);
iSmithChance = iSmithChance+(GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*2);
iSmithChance = iSmithChance*3;
if (iSmithChance>350)iSmithChance=350;
if (iSmithSkill > iSmithChance) iSmithChance=iSmithSkill;
}
if (iArmorChance < 350)
{
iArmorChance = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
iArmorChance = iArmorChance+(GetAbilityScore(oPC,ABILITY_DEXTERITY)*3);
iArmorChance = iArmorChance+(GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*2);
iArmorChance = iArmorChance*3;
if (iArmorChance>350)iArmorChance=350;
if (iArmorSkill > iArmorChance) iArmorChance=iArmorSkill;
}
// Create Ingot Type FlagSwitches
if (iIngotType != 0)CreateItemOnObject("flagswitch010",OBJECT_SELF,1);
if (iIngotType != 1)CreateItemOnObject("flagswitch011",OBJECT_SELF,1);
if (iIngotType != 2)CreateItemOnObject("flagswitch012",OBJECT_SELF,1);
if (iIngotType != 3)CreateItemOnObject("flagswitch013",OBJECT_SELF,1);
if (iIngotType != 4)CreateItemOnObject("flagswitch014",OBJECT_SELF,1);
if (iIngotType != 5)CreateItemOnObject("flagswitch015",OBJECT_SELF,1);
if (iIngotType != 6)CreateItemOnObject("flagswitch016",OBJECT_SELF,1);
if (iIngotType != 7)CreateItemOnObject("flagswitch017",OBJECT_SELF,1);
if (iIngotType != 8)CreateItemOnObject("flagswitch018",OBJECT_SELF,1);
if (iIngotType != 9)CreateItemOnObject("flagswitch019",OBJECT_SELF,1);
if (iIngotType != 10)CreateItemOnObject("flagswitch020",OBJECT_SELF,1);
if (iIngotType != 11)CreateItemOnObject("flagswitch021",OBJECT_SELF,1);
if (iIngotType != 12)CreateItemOnObject("flagswitch022",OBJECT_SELF,1);
if (iIngotType==9) iIngotMod = 90; // Silver is little easier than Bronze
if (iIngotType==10) iIngotMod = 175; // Mithril is hard as Verite
if (iIngotType==11) iIngotMod = 200; // Adamantite is hard as Valorite
if (iIngotType==12) iIngotMod = 150; // Platinum is hard as Agapite
// Modify the skill based on current ingot selection
if (iIngotMod >0) iIngotMod = iIngotMod + 250;
iSmithChance = iSmithChance - iIngotMod;
iArmorChance = iArmorChance - iIngotMod;
// Create tokens for items
if (iArmorChance>0)CreateItemOnObject("pattern022",OBJECT_SELF,1); /// Metal Studs (For studded leather)
if (iSmithChance>0) CreateItemOnObject("pattern069",OBJECT_SELF,1); /// Normal Sling Bullets
if (iSmithChance>50) CreateItemOnObject("pattern042",OBJECT_SELF,1); /// Normal Throwing Darts
if (iSmithChance>50) CreateItemOnObject("pattern021",OBJECT_SELF,1); /// Normal Shuriken
if (iSmithChance>50) CreateItemOnObject("pattern070",OBJECT_SELF,1); /// Normal Arrowheads
if (iSmithChance>50) CreateItemOnObject("pattern062",OBJECT_SELF,1); /// Normal Bolt Tips
if (iSmithChance>50) CreateItemOnObject("pattern045",OBJECT_SELF,1); /// Normal Kama
if (iSmithChance>100) CreateItemOnObject("pattern032",OBJECT_SELF,1); /// Normal Dagger
if (iSmithChance>100) CreateItemOnObject("pattern064",OBJECT_SELF,1); /// Normal Kukri
if (iArmorChance>100) CreateItemOnObject("pattern111",OBJECT_SELF,1); /// Normal Ringmail Armor
if (iSmithChance>150) CreateItemOnObject("pattern027",OBJECT_SELF,1); /// Normal Shortsword
if (iSmithChance>150) CreateItemOnObject("pattern049",OBJECT_SELF,1); /// Normal Handaxe
if (iSmithChance>150) CreateItemOnObject("pattern039",OBJECT_SELF,1); /// Normal Throwing Axes
if (iSmithChance>150) CreateItemOnObject("pattern028",OBJECT_SELF,1); /// Normal Sickle
if (iArmorChance>150) CreateItemOnObject("pattern201",OBJECT_SELF,1); /// Normal Horsehair Helmet
if (iArmorChance>150) CreateItemOnObject("pattern200",OBJECT_SELF,1); /// Normal Pot Helmet
if (iArmorChance>150) CreateItemOnObject("pattern202",OBJECT_SELF,1); /// Normal Spike Helmet
if (iArmorChance>150) CreateItemOnObject("pattern203",OBJECT_SELF,1); /// Normal Stag Helmet
if (iArmorChance>150) CreateItemOnObject("pattern204",OBJECT_SELF,1); /// Normal Winged Helmet
if (iSmithChance>200) CreateItemOnObject("pattern031",OBJECT_SELF,1); /// Normal Mace
if (iArmorChance >=250) CreateItemOnObject("pattern029",OBJECT_SELF,1); /// Normal Small Shield
if (iArmorChance >=250) CreateItemOnObject("pattern110",OBJECT_SELF,1); /// Normal Chainmail Shirt
if (iSmithChance >=250) CreateItemOnObject("pattern046",OBJECT_SELF,1); /// Normal Longsword
if (iSmithChance >=250) CreateItemOnObject("pattern040",OBJECT_SELF,1); /// Normal Light Flail
if (iSmithChance >=250) CreateItemOnObject("pattern044",OBJECT_SELF,1); /// Normal Light Hammer
if (iSmithChance >=250) CreateItemOnObject("pattern024",OBJECT_SELF,1); /// Normal Rapier
if (iArmorChance >=300) CreateItemOnObject("pattern108",OBJECT_SELF,1); /// Normal scale mail armor
if (iSmithChance >=300) CreateItemOnObject("pattern023",OBJECT_SELF,1); /// Normal Morning Star
if (iSmithChance >=300) CreateItemOnObject("pattern060",OBJECT_SELF,1); /// Normal Battleaxe
if (iSmithChance >=300) CreateItemOnObject("pattern030",OBJECT_SELF,1); /// Normal Spear
if (iSmithChance >=300) CreateItemOnObject("pattern025",OBJECT_SELF,1); /// Normal Scimitar
if (iArmorChance >=350) CreateItemOnObject("pattern107",OBJECT_SELF,1); /// Normal Chainmail Armor
if (iArmorChance >=350) CreateItemOnObject("pattern106",OBJECT_SELF,1); /// Normal Breastplate
if (iSmithChance >=350) CreateItemOnObject("pattern063",OBJECT_SELF,1); /// Normal Bastard Sword
if (iArmorChance >=350) CreateItemOnObject("pattern057",OBJECT_SELF,1); /// Normal Large Shield
if (iSmithChance >=350) CreateItemOnObject("pattern048",OBJECT_SELF,1); /// Normal Heavy Flail
if (iSmithChance >=350) CreateItemOnObject("pattern050",OBJECT_SELF,1); /// Normal Warhammer
if (iSmithChance >=350) CreateItemOnObject("pattern056",OBJECT_SELF,1); /// Normal Katana
if (iArmorChance >=400) CreateItemOnObject("pattern100",OBJECT_SELF,1); /// Normal Banded Mail Armor
if (iArmorChance >=400) CreateItemOnObject("pattern105",OBJECT_SELF,1); /// Normal Splint Mail Armor
if (iSmithChance >=400) CreateItemOnObject("pattern053",OBJECT_SELF,1); /// Normal Greatsword
if (iSmithChance >=400) CreateItemOnObject("pattern020",OBJECT_SELF,1); /// Normal Halberd
if (iSmithChance >=400) CreateItemOnObject("pattern026",OBJECT_SELF,1); /// Normal Scythe
if (iSmithChance >=400) CreateItemOnObject("pattern123",OBJECT_SELF,1); /// Normal Greataxe
if (iSmithChance >=400)
{
if (GetRacialType(oPC)==RACIAL_TYPE_DWARF)
CreateItemOnObject("pattern124",OBJECT_SELF,1); /// Normal Dwarven Waraxe
}
if (iArmorChance >=450) CreateItemOnObject("pattern102",OBJECT_SELF,1); /// Normal Half Plate Armor
if (iArmorChance >=450) CreateItemOnObject("pattern043",OBJECT_SELF,1); /// Normal Tower Shield
if (iSmithChance >=450) CreateItemOnObject("pattern033",OBJECT_SELF,1); /// Normal Dire Mace
if (iSmithChance >=450) CreateItemOnObject("pattern059",OBJECT_SELF,1); /// Normal Double Axe
if (iArmorChance >=500) CreateItemOnObject("pattern101",OBJECT_SELF,1); /// Normal Full Plate Armor
if (iSmithChance >=500) CreateItemOnObject("pattern041",OBJECT_SELF,1); /// Normal Two-Bladed Sword
// Search for and destroy any hidden 'body bags' from prior incarnations of this placeable
object oSearchForBag = GetNearestObjectByTag("Body Bag",OBJECT_SELF,1);
if (oSearchForBag == OBJECT_INVALID)return;
object oBagItem = OBJECT_INVALID;
if (GetDistanceToObject(oSearchForBag)<= 0.2)
{
//SendMessageToPC(GetFirstPC(),"Body bag found.. destroying contents..");
oBagItem = GetFirstItemInInventory(oSearchForBag);
while (oBagItem != OBJECT_INVALID)
{
//SendMessageToPC(GetFirstPC(),"Destroying : "+GetName(oBagItem));
DestroyObject(oBagItem);
oBagItem = GetNextItemInInventory(oSearchForBag);
}
DestroyObject(oSearchForBag,1.0);
}
}