Getting my Items to work now..
Moderator: POL Developer
Getting my Items to work now..
So I went through and added most of the graphics and obytypes for my items it would be one Phoenix Ore and one Phoenix Ingot for smithing purposes and the like. For some reason once I have them all in and try to use them near a forge to smelt or with a smith hammer they do not work whatsoever prompting "you cant smelt that" or "you and only use this one ingots". if someone could find a detailed solution with me this would be greatly appreciated.
Re: Getting my Items to work now..
You have to add these objtypes into your smelting and smith hammer scripts. If you're double clicking the ore while standing near a forge, check the use script for the ore, if you're using the forge and targeting the ore, check the use script for forges. The smith's hammer the same. Check its use script.
Re: Getting my Items to work now..
Okay didnt think of that brilliance isnt an attribute of mine.... also I got another nasty confusing error while compiling Server/pkg/skills/harvesting/mining/smelting.src saying that the lablel
UOBJ_PHOENIX_ORE: SmeltOre( character, ore, UOBJ_PHOENIX_INGOT, 53, 108);
can only come after REPEAT, CASE, FOREACH and ect ect, at the least it wont allow me to compile, but I'll add it to my hammer and forge scripts pronto and see what I get its not imperitive that this ore is mineable in the first place since its pretty and shiny
UOBJ_PHOENIX_ORE: SmeltOre( character, ore, UOBJ_PHOENIX_INGOT, 53, 108);
can only come after REPEAT, CASE, FOREACH and ect ect, at the least it wont allow me to compile, but I'll add it to my hammer and forge scripts pronto and see what I get its not imperitive that this ore is mineable in the first place since its pretty and shiny
Re: Getting my Items to work now..
Okay to further make things worse.. heres the scripts..
This script calls for the smiths hammer aswell as for the forge im not so worried about but I have added to the 3 or for itemdesc files I have in my Blacksmithy skills folder and it still seems to be givin me the same dead end..
Blacksmithy.inc
This script calls for the smiths hammer aswell as for the forge im not so worried about but I have added to the 3 or for itemdesc files I have in my Blacksmithy skills folder and it still seems to be givin me the same dead end..
Code: Select all
/////////////////
// make_blacksmith_items.src
//
// Use a smithy hammer to either repair arms & armor or
// to work with metal to create new items. You need to be
// skillful to work with the rarer metals.
//
// TODO: remove hardcoding of skill pointvalue
//
// Author: DreamWeaver:
// original
// Racalac:
// colored items
// Updates: Dream Weaver 6/3/99 handled item quality an HP to new specs
// Ignatius 99/06/10 added name of maker to exceptional items.
// S!tH 9/05/2001 All coloured mods run through ingots.cfg.
// -4 qualities.
// Updates: Repsak completedly changed the way mining works, now GM have to
// place vains (.makevein) for players to be able to find special ore.
// crap ore, like dull copper/copper/bronze, and iron can be found anywhere on the map.
// the higher skill in mining the more ore per chop.
////////////////
use uo;
use cfgfile;
use os;
use util;
use basicio;
include "include/client";
include "include/attributes";
include "include/objtype";
include "include/yesno";
include "include/string";
include "include/magicitems";
include "include/makemenu";
include "blacksmithy";
include "include/class";
include "include/trainingskill";
include "include/crafting";
include "gump";
Var primaryskill:=SKILLID_BLACKSMITHY;
var secondaryskill:=SKILLID_ARMSLORE;
var skillname:="Blacksmithy";
var menu_cfg_file := ReadConfigFile(":blacksmithy:menu");
var cfg_file := ReadConfigFile( "items" );
var resources_file := ReadConfigFile( ":blacksmithy:ingots" );
var itemcfg := ReadConfigFile(":combat:itemdesc");
var smith_cfg := ReadConfigFile( ":blacksmithy:items" ); //what can i make ?
var ingotscfg := ReadConfigFile( ":blacksmithy:ingots" ); //what ingots exists ?
var itemname,noncrafted;
var ingots;
// called when a player double-clicks a hammer or other blacksmith tool
program use_hammer( character, hammer )
if (GetObjProperty (character, "NoHit") > readgameclock() )
PrintTextAbovePrivate (character, "I feel disheartened and I am not in the mood to do so.", character);
return;
endif
var data := {};
data[1] := "blacksmithy";
data[2] := ReadGameClock();
data[3] := 7;
SetObjProperty(character, "LastUsedSkill", data );
TrainingSkill(character, data[3]);
EraseObjProperty(character, "StopCrafting");
var craftingbag := FindCraftingBag(character);
var mount := GetEquipmentByLayer( character, 25 );
if ( mount )
PrintTextAbovePrivate( character, "You cannot smith while mounted.", character );
return;
endif
if (! IsHammerEquipped(character, hammer) )
SendSysMessage(character, "You have to equip that to craft!");
return;
endif
SendSysMessage( character, "What would you like to use that on?" );
var use_on := Target( character );
if( !use_on )
SendSysMessage( character, "Targetting cancelled" );
return;
endif
if (!Accessible(character, use_on) )
SendSysMessage(character, "You can't reach that!");
return;
endif
if (!ReserveItem(use_on) )
SendSysMessage(character, "You can't use that right now.");
return;
endif
if( is_weapon_armor(use_on) )
var near_items := ListItemsNearLocation(character.x, character.y, character.z,2);
foreach item in near_items
if ((item.objtype == UOBJ_ANVIL1) || (item.objtype == UOBJ_ANVIL2))
RepairBlacksmithyItem( character, use_on, SKILLID_BLACKSMITHY );
return;
endif
endforeach
SendSysMessage( character, "You must be near an anvil to repair items!" );
return;
endif
if( !isIngot(use_on.objtype) )
SendSysMessage( character, "You can only use that on ingots!" );
return;
endif
if( !CheckSkillForDifferentMetals( character, use_on, hammer ) )
SendSysMessage( character, "You have no chance to successfully work with that metal." );
return;
endif
if (use_on.movable == 0 )
SendSysMessage(character, "Its locked down.");
return;
endif
var near_items := ListItemsNearLocation(character.x, character.y, character.z,2);
foreach item in near_items
if ((item.objtype == UOBJ_ANVIL1) || (item.objtype == UOBJ_ANVIL2))
MakeBlacksmithItems(character, use_on, craftingbag);
return;
endif
endforeach
SendSysMessage( character, "You must be near an anvil to smith items!" );
endprogram
function is_weapon_armor(what)
if ( IsMetalWeapon(what) || IsMetalArmor(what) || IsMetalShield(what) )
return 1;
else
return 0;
endif
endfunction
function MakeBlacksmithItems( character, ingots, craftingbag )
var skill, bonusskill; //skill needed to create the item
var element; // entry in smith_config
var material; //amount of material needed to create the item
var points, retval, maxhp, quality, itemname, time, hasquality;
if ( !Accessible( character, ingots))
SendSysMessage( character, "You don't have any ingots!" );
return;
endif
if (!smith_cfg)
SendSysMessage(character, "Could not open blacksmith.cfg");
return;
endif
//calls the SelectWhatToMakeFromMenu function found in makemenu.inc, in /scripts/include
var what := sendCraftGump(character, skillname, primaryskill, menu_cfg_file, "mainmenu", ingots.amount);
if (!what || CINT(what)==CINT(1025))
SendSysMessage(character, "Canceled.");
return;
endif
maxhp := (itemcfg[what].maxhp);
element := FindConfigElem( smith_cfg,what ); //need to make sure the key reflects the menu return value
if (element)
material := GetConfigInt( element, "material" );
skill := GetConfigInt( element, "skill" );
itemname := GetConfigString( element, "Name");
points := GetConfigInt( element, "points" );
time := GetConfigInt( element, "time" );
hasquality := GetConfigInt( element, "hasquality" );
else
print("Bad stuff goin on!");
endif
var metalelem, newcolour, bonuspoints, bonushp, prefix, suffix, enchantments, dmgmod, armmod, cashmod, baseskill;
metalelem := FindConfigElem( ingotscfg, ingots.objtype );
if( metalelem)
dmgmod := GetConfigInt( metalelem, "damageMod" );
armmod := GetConfigInt( metalelem, "armourMod" );
bonusskill := GetConfigInt( metalelem, "bonusSkill" );
newcolour := GetConfigInt( metalelem, "newColour" );
bonuspoints := GetConfigInt( metalelem, "bonusPoints" );
bonushp := GetConfigInt( metalelem, "bonusHp" );
prefix := GetConfigString( metalelem, "prefix" );
suffix := GetConfigString( metalelem, "suffix" );
enchantments := GetConfigString( metalelem, "enchantments" );
enchantments := SplitWords( enchantments );
points := CInt((points * bonuspoints) / 100);
skill := CInt(skill);
baseskill := CInt((skill * bonusskill) / 100);
cashmod := GetConfigInt( metalelem, "minSkill" ) / 50;
if( skill > 99.0 )
skill := 99.0;
endif
itemname := prefix + " " + itemname + " " + suffix;
endif
////////////////////////////////////////////////////////////////////////////////////////////
//This is something so that higher smiths find it easier to craft stuff.
//Uncomment & modify if you want.
////////////////////////////////////////////////////////////////////////////////////////////
// local noSkillSub := GetConfigInt( metalElem, "noSkillSub" );
// if( !noSkillSub )
// if( skill > 86 )
// local tSkill := GetSkill( character, SKILLID_BLACKSMITHY ) - 86;
// if( tSkill > 0 )
// skill := skill - tSkill;
// endif
// endif
// endif
////////////////////////////////////////////////////////////////////////////////////////////
if( !cashmod || cashmod < 1.0 )
cashmod := 1.0;
endif
////////////////////////////////////////////////////////////////////////////////////////////
//For AutoLoop: Uncomment this and the endwhile lower down.
////////////////////////////////////////////////////////////////////////////////////////////
var mx := character.x;
var my := character.y;
var doLoop := 1;
var calledLoopGump := 0;
noncrafted:= 0;
while( GetAmount(ingots)+1 > material && mx == character.x && my == character.y && doLoop && noncrafted==0 && !GetObjProperty (character,"StopCrafting"))
if( !calledLoopGump )
doLoop := YesNo( character, "Autoloop?" );
calledLoopGump := 1;
endif
////////////////////////////////////////////////////////////////////////////////////////////
if( GetAmount(ingots) < material )
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
retval := PlaySoundEffect(character, SFX_ANVIL);
sleepms(2100);
SendSysMessage( character, "You do not have enough ingots." );
return;
endif
if(character.cmdlevel < 3)
var i := 0;
for(i; i < time; i := i +1)
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
retval := PlaySoundEffect(character, SFX_ANVIL);
sleepms(2100);
endfor
endif
if( metalelem )
if(CheckSkill( character, SKILLID_BLACKSMITHY, baseskill, modify_points(character, SKILLID_BLACKSMITHY, points) ))
var theitem:= CreateItemInContainer(craftingbag, what, 1 );
if (!theitem)
theitem:=createitematlocation(character.x,character.y,character.z,what,1);
endif
if (theitem) //they sucessfully create the item
ReleaseItem( theitem );
//SetObjProperty( theitem, "cashMod", cashMod );
if( metalelem )
theitem.color := ingots.color;
if(!hasquality)
return;
endif
theitem.maxhp := theitem.maxhp + bonushp;
SetObjProperty( theitem, "Enchantments", enchantments );
SetObjProperty( theitem, "IngotType", ingots.objtype );
SetObjProperty( theitem, "Material", prefix + " ingots" );
if (character.cmdlevel>2)
SetObjProperty( theitem, "GMcrafted", character.acctname );
endif
endif
theitem.ar_mod := CInt(armmod);
theitem.dmg_mod := CInt(dmgmod);
//Exceptional Quality Etc
modifyQuality( character, points, quality, itemname, theitem, baseskill, ingots );
SubtractAmount( ingots, material );
else
PrintTextAbovePrivate(character, "*Your backpack is full!*", character);
noncrafted:=1;
return;
endif //theitem
else //checkskill
SubtractAmount( ingots, RandomInt(material) );
SendSysMessage( character, "You destroy some ingots." );
endif //checkskill
endif //metalElem
////////////////////////////////////////////////////////////////////////////////////////////
endwhile //autoloop
////////////////////////////////////////////////////////////////////////////////////////////
EraseObjProperty (character,"StopCrafting");
endfunction
function oldmodifyQuality( who, points, quality, itemname, theitem, skill, ingots )
var eskill := CInt( 100 - (((GetEffectiveSkill( who, SKILLID_BLACKSMITHY))+1 ) - skill));
if(eskill <= 50)
eskill := 50;
endif
var askill := CInt( 100 - (((GetEffectiveSkill( who, SKILLID_BLACKSMITHY))+21) - skill));
if(askill <= 30)
askill := 30;
endif
var nskill := CInt( 100 - (((GetEffectiveSkill( who, SKILLID_BLACKSMITHY))+56) - skill));
if(nskill <= 5)
nskill := 5;
endif
var rint := RandomInt(100)+1;
var armsskill := CInt(GetEffectiveSkill( who, SKILLID_ARMSLORE) / 3) - 15;
if(armsskill <= -6)
armsskill := -6;
endif
eskill := CInt(eskill - armsskill);
points := 0;
if(rint > eskill)
var bskill := GetEffectiveSkill( who, SKILLID_BLACKSMITHY);
if(bskill > 95)
var elitechance := bskill - 99;
if(elitechance > 25)
elitechance := 25;
endif
var reint := RandomInt(100)+1;
if(reint < elitechance)
//Elite Quality 130%
theitem.quality := 1.3;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 30;
add_special_ingot_bonus( who, theitem, ingots );
var newname := SendTextEntryGump( who, "Choose name for the elite item", 50);
if(newname)
SetName(theitem, "-" + newname + "-" );
else
SetName(theitem, "an elite " + itemname);
endif
SendSysMessage( who, "You create an elite " + itemname + "and place it in your pack." );
SetObjProperty(theitem, "craftedby", "crafted by " + who.name);
SetObjProperty(theitem, "elite", 1);
SetObjProperty(theitem, "name", itemname);
return;
else
endif
else
endif
//Exceptional Quality 120%
theitem.quality := 1.2;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 10;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "an exceptional " + itemname);
SendSysMessage( who, "You create an exceptional " + itemname + "and place it in your pack." );
SetObjProperty(theitem, "craftedby", "crafted by " + who.name);
elseif(rint > askill)
//Above Average Quality 100%
theitem.quality := 1;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 7;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "a quality " + itemname );
SendSysMessage( who, "You create a quality " + itemname + "and place it in your pack." );
elseif(rint > nskill)
//Normal Quality 90%
theitem.quality := 0.9;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 5;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "a " + itemname );
SetName(theitem, itemname );
SendSysMessage( who, "You create " + AddArticle(itemname) + "and place it in your pack." );
else
//Below Quality 70%
theitem.quality := 0.7;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 2;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "a below average quality " + itemname );
SendSysMessage( who, "You create a below average quality " + itemname + "and place it in your pack." );
endif
endfunction
function modifyQuality( who, points, quality, itemname, theitem, skill, ingots )
var elite_chance, exceptional_chance, quality_chance, normal_chance;
var playersskill:=GetEffectiveSkill( who, SKILLID_ARMSLORE);
var qualitychances:=Randomint(100)+1;
var players_blacksmithy:=GetEffectiveSkill( who, SKILLID_BLACKSMITHY);
if (playersskill>skill+20)
elite_chance:=10;
exceptional_chance:=100;
elseif (playersskill>skill+10)
elite_chance:=5;
exceptional_chance:=90;
quality_chance:=100;
elseif (playersskill>skill)
elite_chance:=2;
exceptional_chance:=30;
quality_chance:=60;
normal_chance:=100;
elseif (playersskill+10>skill)
elite_chance:=0;
exceptional_chance:=10;
quality_chance:=30;
normal_chance:=80;
elseif (playersskill+10<skill)
elite_chance:=0;
exceptional_chance:=1;
quality_chance:=10;
normal_chance:=30;
elseif (playersskill+20<skill)
elite_chance:=0;
exceptional_chance:=0;
quality_chance:=5;
normal_chance:=15;
endif
if (players_blacksmithy<90)
elite_chance:=0;
endif
if (who.cmdlevel>1)
sendsysmessage(who, "Skill: "+skill);
sendsysmessage(who, "Elite Chance: "+elite_chance);
sendsysmessage(who, "Exceptional Chance: "+exceptional_chance);
sendsysmessage(who, "Quality Chance: "+quality_chance);
sendsysmessage(who, "Normal Chance: "+normal_chance);
sendsysmessage(who, "Quality chance: "+qualitychances);
endif
if (qualitychances<elite_chance)
theitem.quality := 1.3;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 30;
add_special_ingot_bonus( who, theitem, ingots );
var newname := SendTextEntryGump( who, "Choose name for the elite item", 50);
if(newname)
SetName(theitem, "-" + newname + "-" );
else
SetName(theitem, "an elite " + itemname);
endif
SendSysMessage( who, "You create an elite " + itemname + "and place it in your pack." );
SetObjProperty(theitem, "craftedby", "crafted by " + who.name);
SetObjProperty(theitem, "elite", 1);
SetObjProperty(theitem, "name", itemname);
elseif (qualitychances<exceptional_chance)
theitem.quality := 1.2;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 10;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "an exceptional " + itemname);
SendSysMessage( who, "You create an exceptional " + itemname + "and place it in your pack." );
SetObjProperty(theitem, "craftedby", "crafted by " + who.name);
elseif (qualitychances<quality_chance)
theitem.quality := 1;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 7;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "a quality " + itemname );
SendSysMessage( who, "You create a quality " + itemname + "and place it in your pack." );
elseif (qualitychances<normal_chance)
theitem.quality := 0.9;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 5;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "a " + itemname );
SetName(theitem, itemname );
SendSysMessage( who, "You create " + AddArticle(itemname) + "and place it in your pack." );
else
theitem.quality := 0.7;
theitem.hp := theitem.maxhp;
theitem.hp := theitem.hp + 2;
add_special_ingot_bonus( who, theitem, ingots );
SetName(theitem, "a below average quality " + itemname );
SendSysMessage( who, "You create a below average quality " + itemname + "and place it in your pack." );
endif
endfunction
function CheckSkillForDifferentMetals( character, ingot, tool )
var ingotelem := FindConfigElem( ingotscfg, ingot.objtype );
var minskill := GetConfigInt( ingotelem, "minSkill" );
//Special Smithy Tool Requirements
var toolprop := GetConfigString( ingotelem, "reqProp" );
if( toolprop && toolprop != "error" );
if( !GetObjProperty( tool, toolprop ) )
SendSysMessage( character, "You require a special tool to work with these ingots." );
return 0;
endif
endif
var toolench := GetConfigString( ingotelem, "reqEnch" );
if( toolench && toolench != "error" )
var tenchantments := GetObjProperty( tool, "Enchantments" );
var hasench := 0;
foreach ench in tenchantments
if( ench == toolench )
hasench := 1;
endif
endforeach
if( !hasench )
SendSysMessage( character, "You require a specially enchanted tool to work with these ingots." );
return 0;
endif
endif
if( CheckHisSkill( character, minskill ) )
return 1;
else
return 0;
endif
endfunction
function CheckHisSkill( character, skill )
var his_skill := GetEffectiveSkill( character, SKILLID_BLACKSMITHY );
if( his_skill >= skill )
return 1;
else
return 0;
endif
endfunction
function IsHammerEquipped(me,hammer)
if ( (!Accessible(me, hammer)) || (Distance(me, hammer) > 1) )
return 0;
endif
if ( hammer.movable == 0 )
return 0;
endif
foreach item in ListEquippedItems(me)
if (hammer.serial == item.serial )
return 1;
endif
endforeach
return EquipItem(me, hammer );
endfunction
function add_special_ingot_bonus(who, theitem, ingots )
case( Hex(ingots.objtype))
"0x6550": b_DullCopper( theitem );
"0x6551": b_Copper( theitem );
"0x6552": b_bronze( theitem );
"0x6553": b_iron( theitem );
"0x6554": b_verite( theitem );
"0x6555": b_syntian( theitem );
"0x6556": b_azurite( theitem );
"0x6557": b_executor( theitem );
"0x6558": b_radlius( theitem );
"0x6559": b_aughlite( theitem );
"0x655A": b_spiritstone( theitem );
"0x655B": b_devilsclaw( theitem );
"0x655C": b_shadow( theitem );
"0x655D": b_gloom( theitem );
"0x655E": b_devilstooth( theitem );
"0x655F": b_pyrite( theitem );
"0x6560": b_agapite( theitem );
"0x6561": b_malachite( theitem );
"0x6562": b_kryztal( theitem );
"0x6563": b_gold( theitem );
"0x6564": b_velvite( theitem );
"0x6565": b_snograz( theitem );
"0x6566": b_valorite( theitem );
"0x6567": b_fatigue( theitem );
"0x6568": b_wraithsbone( theitem );
"0x6569": b_scarlelite( theitem );
"0x656A": b_onyx( theitem );
"0x656B": b_coral( theitem );
"0x657B": b_solar( theitem );
"0x657C": b_startear( theitem );
"0x657D": b_silver( theitem );
"0x657E": b_lunar( theitem );
"0x657F": b_royal( theitem );
// SPECIAL ORES
"0x656C": b_deamonsfear( theitem );
"0x656D": b_deamonrock( theitem );
"0x656E": b_molten( theitem );
// Specialist Ores [DWARVEN]
"0x656F": b_lhiolite( theitem );
"0x6570": b_gredstinuel( theitem );
"0x6571": b_glacial( theitem ); //Glacial for us
"0x6572": b_tekrhan( theitem );
"0x6573": b_hekhranish( theitem );
"0x6574": b_dwarfishorkanian( theitem );
"0x6575": b_aorkrhan( theitem );
"0x6576": b_auropian( theitem );
// Radlius Series [RADLIUS]
"0x6577": b_shalrius( theitem );
"0x6578": b_ghuronius( theitem );
"0x6579": b_keltrunius( theitem );
// Gargoyles
"0x657A": b_atrintium( theitem );
// Special Ores
"0x64F7": b_mithril( theitem );
"0x64F9": b_adamantium( theitem );
"0xF58": b_electrical( theitem );
"0xF59": b_magnetic ( theitem );
"0xF5B": b_winterite ( theitem );
"0xF5A": b_molten ( theitem );
"0x6580": b_rosesteel ( theitem );
"0x658A": b_crimsonite ( theitem );
"0xFFFD": b_phoenix ( theitem);
default: return( theitem ); //something funky has happened - return item unchanged
endcase
endfunction
function b_DullCopper( theitem )
SetObjProperty(theitem, "dca",1); //for special Abilitys Later
endfunction
function b_Copper( theitem )
SetObjProperty(theitem, "coa",1); //for special Abilitys Later
endfunction
function b_bronze( theitem )
SetObjProperty(theitem, "bro",1); //for special Abilitys Later
endfunction
function b_iron( theitem )
SetObjProperty(theitem, "iro",1); //for special Abilitys Later
endfunction
function b_verite( theitem )
SetObjProperty(theitem, "ver",1); //for special Abilitys Later
endfunction
function b_syntian( theitem )
SetObjProperty(theitem, "syn",1); //for special Abilitys Later
endfunction
function b_azurite( theitem )
SetObjProperty(theitem, "azu",1); //for special Abilitys Later
SetObjProperty(theitem, "dexdrain", 25);
endfunction
function b_executor( theitem )
SetObjProperty(theitem, "exe",1); //for special Abilitys Later
SetObjProperty(theitem, "ratmanslaying", 1);
endfunction
function b_radlius( theitem )
SetObjProperty(theitem, "rad",1); //for special Abilitys Later
SetObjProperty(theitem, "blocking", 6);
endfunction
function b_aughlite( theitem )
SetObjProperty(theitem, "aug",1); //for special Abilitys Later
SetObjProperty(theitem, "protdexdrain", 5);
endfunction
function b_spiritstone( theitem )
SetObjProperty(theitem, "spi",1); //for special Abilitys Later
SetObjProperty(theitem, "blocking", 3);
endfunction
function b_devilsclaw( theitem )
SetObjProperty(theitem, "dcl",1); //for special Abilitys Later
SetObjProperty(theitem, "ophidianslaying", 1);
endfunction
function b_shadow( theitem )
SetObjProperty(theitem, "sha",1); //for special Abilitys Later
endfunction
function b_gloom( theitem )
SetObjProperty(theitem, "glo",1); //for special Abilitys Later
SetObjProperty(theitem, "dismount", 1);
endfunction
function b_devilstooth( theitem )
SetObjProperty(theitem, "dto",1); //for special Abilitys Later
SetObjProperty(theitem, "lizardmanslaying", 1);
endfunction
function b_pyrite( theitem )
SetObjProperty(theitem, "pyr",1); //for special Abilitys Later
SetObjProperty(theitem, "orcslaying", 1);
endfunction
function b_agapite( theitem )
SetObjProperty(theitem, "aga",1); //for special Abilitys Later
SetObjProperty(theitem, "protparalyze", 15);
endfunction
function b_malachite( theitem )
SetObjProperty(theitem, "mal",1); //for special Abilitys Later
SetObjProperty(theitem, "poisonresist", 15);
endfunction
function b_kryztal( theitem )
SetObjProperty(theitem, "kry",1); //for special Abilitys Later
SetObjProperty(theitem, "weaponbreaking", 1);
endfunction
function b_gold( theitem )
SetObjProperty(theitem, "gol",1); //for special Abilitys Later
endfunction
function b_velvite( theitem )
SetObjProperty(theitem, "dsp",1); //for special Abilitys Later
SetObjProperty(theitem, "blocking", 10);
endfunction
function b_rosesteel( theitem )
SetObjProperty(theitem, "ros",1); //for special Abilitys Later
SetObjProperty(theitem, "blocking", 6);
endfunction
function b_mithril( theitem )
SetObjProperty(theitem, "mth",1); //for special Abilitys Later
SetObjProperty(theitem, "blocking", 30);
endfunction
function b_snograz( theitem )
SetObjProperty(theitem, "sno",1); //for special Abilitys Later
SetObjProperty(theitem, "poison", 5);
endfunction
function b_valorite( theitem )
SetObjProperty(theitem, "val",1); //for special Abilitys Later
endfunction
function b_fatigue( theitem )
SetObjProperty(theitem, "fat",1); //for special Abilitys Later
SetObjProperty(theitem, "protmanadrain", 15);
endfunction
function b_wraithsbone( theitem )
SetObjProperty(theitem, "wra",1); //for special Abilitys Later
SetObjProperty(theitem, "vampire", 5);
endfunction
function b_scarlelite( theitem )
SetObjProperty(theitem, "sca",1); //for special Abilitys Later
SetObjProperty(theitem, "damreflect", 10);
endfunction
function b_crimsonite( theitem )
SetObjProperty(theitem, "sca",1); //for special Abilitys Later
SetObjProperty(theitem, "damreflect", 5);
endfunction
function b_onyx( theitem )
SetObjProperty(theitem, "ony",1); //for special Abilitys Later
SetObjProperty(theitem, "allelement", 10);
SetObjProperty(theitem, "manadrain", 10);
endfunction
function b_empyrean( theitem )
SetObjProperty(theitem, "emp",1); //for special Abilitys Later
SetObjProperty(theitem, "allelement", 15);
SetObjProperty(theitem, "extra_damage", 5);
endfunction
function b_deamonsfear( theitem )
SetObjProperty(theitem, "dfe",1); //for special Abilitys Later
SetObjProperty(theitem, "deamonslaying", 1);
endfunction
function b_deamonrock( theitem )
SetObjProperty(theitem, "dro",1); //for special Abilitys Later
SetObjProperty(theitem, "damreflect", 15);
endfunction
function b_deamonskull( theitem )
SetObjProperty(theitem, "dsk",1); //for special Abilitys Later
endfunction
function b_lhiolite( theitem )
SetObjProperty(theitem, "lhi",1); //for special Abilitys Later
SetObjProperty(theitem, "fireresist", 25);
endfunction
function b_gredstinuel( theitem )
SetObjProperty(theitem, "gre",1); //for special Abilitys Later
SetObjProperty(theitem, "coldresist", 25);
endfunction
function b_winterite( theitem )
SetObjProperty(theitem, "win",1); //for special Abilitys Later
SetObjProperty(theitem, "coldresist", 20);
endfunction
function b_glacial( theitem )
SetObjProperty(theitem, "gla",1); //for special Abilitys Later
SetObjProperty(theitem, "cold", 5);
SetObjProperty(theitem, "coldresist", 5);
endfunction
function b_tekrhan( theitem )
SetObjProperty(theitem, "tek",1); //for special Abilitys Later
SetObjProperty(theitem, "terathanslaying", 1);
endfunction
function b_hekhranish( theitem )
SetObjProperty(theitem, "hek",1); //for special Abilitys Later
SetObjProperty(theitem, "dragonslaying", 1);
endfunction
function b_dwarfishorkanian( theitem )
SetObjProperty(theitem, "dor",1); //for special Abilitys Later
SetObjProperty(theitem, "trollslaying", 1);
endfunction
function b_aorkrhan( theitem )
SetObjProperty(theitem, "aor",1); //for special Abilitys Later
SetObjProperty(theitem, "manadrain", 10);
SetObjProperty(theitem, "protparalyze", 10);
endfunction
function b_auropian( theitem )
SetObjProperty(theitem, "aur",1); //for special Abilitys Later
SetObjProperty(theitem, "allelement", 25);
endfunction
function b_shalrius( theitem )
SetObjProperty(theitem, "sha",1); //for special Abilitys Later
SetObjProperty(theitem, "sha",1);
endfunction
function b_ghuronius( theitem )
SetObjProperty(theitem, "ghu",1); //for special Abilitys Later
SetObjProperty(theitem, "shock", 1);
endfunction
function b_keltrunius( theitem )
SetObjProperty(theitem, "kel",1); //for special Abilitys Later
SetObjProperty(theitem, "extra_damage", 20);
endfunction
function b_atrintium( theitem )
SetObjProperty(theitem, "atr",1); //for special Abilitys Later
SetObjProperty(theitem, "paralyze", 10);
endfunction
function b_solar( theitem )
SetObjProperty(theitem, "sol",1); //for special Abilitys Later
SetObjProperty(theitem, "fire", 3);
SetObjProperty(theitem, "fireresist", 3);
endfunction
function b_molten( theitem )
SetObjProperty(theitem, "sol",1); //for special Abilitys Later
SetObjProperty(theitem, "fire", 5);
SetObjProperty(theitem, "fireresist", 5);
endfunction
function b_volcanic( theitem )
SetObjProperty(theitem, "sol",1); //for special Abilitys Later
SetObjProperty(theitem, "fire", 1);
SetObjProperty(theitem, "fireresist", 1);
endfunction
function b_startear( theitem )
SetObjProperty(theitem, "sta",1); //for special Abilitys Later
SetObjProperty(theitem, "cold", 3);
SetObjProperty(theitem, "coldresist", 3);
endfunction
function b_coral( theitem )
SetObjProperty(theitem, "cor",1); //for special Abilitys Later
SetObjProperty(theitem, "cold", 1);
SetObjProperty(theitem, "coldresist", 1);
endfunction
function b_silver( theitem )
SetObjProperty(theitem, "sil",1); //for special Abilitys Later
SetObjProperty(theitem, "silver", 1);
endfunction
function b_lunar( theitem )
SetObjProperty(theitem, "lun",1); //for special Abilitys Later
SetObjProperty(theitem, "elec", 3);
SetObjProperty(theitem, "elecresist", 3);
endfunction
function b_electrical( theitem )
SetObjProperty(theitem, "ele",1); //for special Abilitys Later
SetObjProperty(theitem, "elec", 1);
SetObjProperty(theitem, "elecresist", 1);
endfunction
function b_magnetic( theitem )
SetObjProperty(theitem, "mag",1); //for special Abilitys Later
SetObjProperty(theitem, "elec", 5);
SetObjProperty(theitem, "elecresist", 5);
endfunction
function b_royal( theitem )
SetObjProperty(theitem, "roy",1); //for special Abilitys Later
SetObjProperty(theitem, "magicresist", 20);
endfunction
function b_adamantium( theitem )
SetObjProperty(theitem, "adm",1); //for special Abilitys Later
SetObjProperty(theitem, "damreflect", 30);
endfunction
function b_phoenix( theitem )
SetObjProperty(theitem, "pho",1); //for special Abilitys Later
SetObjProperty(theitem, "allelement", 35);
SetObjProperty(theitem, "fire", 35);
endfunction
Code: Select all
///////////////////
// Allows the user to try to repair a blacksmithy item
///////////////////
include "include/attributes";
function RepairBlacksmithyItem(byref character, byref item, repair_skill)
if (!item.maxhp || !item.quality)
SendSysMessage(character, "That item cannot be repaired.");
return;
endif
//if the item is in full repair, try to do special stuff
if (item.hp >= item.maxhp)
if ( GetObjProperty(item,"ownerserial") )
SendSysMessage(character, "That has an owner's mark!");
return;
endif
DoSpecialBlacksmithingStuff(character, item, repair_skill);
return;
endif
//make sure the item is good enough to be repairable
if (item.hp <= 10)
SendSysMessage(character, "The brittle material breaks when you handle it.");
DestroyItem(item);
return;
endif
//setup some variables
var item_damaged_amount := item.maxhp - item.hp;
//now determine how many ingots and how much skill it will take to repair this item
var ingots_needed := CInt(item_damaged_amount/15);
if (!ingots_needed)
ingots_needed := 1;
endif
//allow the use to pick which ingots to use
SendSysMessage(character, "You need " + ingots_needed + " ingot(s) to repair this item.");
SendSysMessage(character, "Target the same type of ingots to repair it");
var found_ingots := Target(character);
if (!found_ingots)
SendSysMessage(character, "Canceled.");
return;
endif
if (!IsIngot(found_ingots.objtype) )
SendSysMessage(character, "That's not an ingot!");
return;
endif
var hidetype := GetObjProperty( item, "IngotType");
if (hidetype != found_ingots.objtype)
SendSysMessage(character, "That is not the same type of ingots!");
return;
endif
if (!ReserveItem(found_ingots) )
SendSysMessage(character, "You cannot use that right now.");
return;
endif
if (!Accessible(character, found_ingots) )
SendSysMessage(character, "You can't reach that.");
return;
endif
if (found_ingots.amount < ingots_needed)
SendSysMessage(character, "You need " + ingots_needed + " ingots. That's only " + found_ingots.amount + "!");
return;
endif
PlaySoundEffect(character, SFX_ANVIL);
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
sleep(2);
PlaySoundEffect(character, SFX_ANVIL);
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
sleep(2);
PlaySoundEffect(character, SFX_ANVIL);
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
sleep(2);
SubtractAmount(found_ingots, ingots_needed);
var total_damage := GetObjProperty(item, "total_damage");
if (!total_damage)
total_damage := 0;
endif
if (total_damage + item_damaged_amount > item.maxhp)
DestroyItem(item);
SendSysMessage(character, "The brittle material breaks when you handle it.");
return;
endif
if (!CheckSkill(character, repair_skill, 80, 0) )
total_damage := total_damage + RandomInt(10);
SetObjProperty(item, "total_damage", total_damage);
if (total_damage + item_damaged_amount > item.maxhp)
DestroyItem(item);
SendSysMessage(character, "The brittle material breaks when you handle it.");
return;
endif
SendSysMessage(character, "You only manage to damage the item further...");
item.hp := item.hp - (RandomInt(10));
return;
endif
var skill_bonus := CInt(GetEffectiveSkill(character, SKILLID_BLACKSMITHY)/4);
if (item.name["fine"])
skill_bonus := skill_bonus + 5;
elseif (item.name["durable"])
skill_bonus := skill_bonus + 10;
elseif (item.name["rugged"])
skill_bonus := skill_bonus + 15;
elseif (item.name["tempered"])
skill_bonus := skill_bonus + 20;
elseif (item.name["indestructable"])
skill_bonus := skill_bonus + 25;
elseif (item.name["exceptional"])
skill_bonus := skill_bonus + 25;
endif
item_damaged_amount := CInt(item_damaged_amount * (100-skill_bonus)/100);
if (item_damaged_amount < 5)
item_damaged_amount := 5;
endif
total_damage := total_damage + item_damaged_amount;
SetObjProperty(item, "total_damage", total_damage);
item.hp := item.maxhp;
SendSysMessage(character, "You repair the item completely");
return;
endfunction
///////////////////
// checks what special options are available for upgrading a blacksmithy item
///////////////////
function DoSpecialBlacksmithingStuff(byref character, byref item, repair_skill)
if (getobjproperty(item, "elite"))
makelegendary(character,item);
return;
endif
//nothing we can do with player made items at the highest upgrade level
if (item.desc["exceptional"] || item.desc["Exceptional"])
SendSysMessage(character, "That item is in full repair.");
return;
endif
//if its a magic item and they're using blacksmithy, they can change the color of the item, or
//if its a breastplate, they can change its gender
if (IsMagicalItem(item))
// if (repair_skill != SKILLID_BLACKSMITHY)
SendSysMessage(character, "Magical items can not be repaired.");
return;
// endif
if (item.graphic == UOBJ_PLATE_BREASTPLATE || item.graphic == UOBJ_PLATE_BREASTPLATE2 ||
item.graphic == UOBJ_PLATE_FEMALE || item.graphic == UOBJ_PLATE_FEMALE2)
var menu := CreateMenu("Options:");
AddMenuItem(menu, 0, "Laminate");
AddMenuItem(menu, 0, "Change gender");
var selection := SelectMenuItem2(character, menu);
if (!selection)
SendSysMessage(character, "Canceled.");
return;
elseif (selection.index == 1)
DoColorCoating(character, item, repair_skill);
return;
elseif (selection.index == 2)
ChangeGenderOfMetalArmor(character, item, repair_skill);
return;
else
SendSysMessage(character, "You're not supposed to get this message. Whoops.");
return;
endif
return;
else
//DoColorCoating (character, item, repair_skill);
SendSysMessage(character, "That item is in full repair.");
return;
endif
//otherwise try to upgrade it
else
//DoBlacksmithyItemUpgrade (character, item, repair_skill);
SendSysMessage(character, "That item is in full repair.");
return;
endif
endfunction
///////////////////
// Tries to upgrade the item that was selected. This section only confirms the upgrade, then
// calls a seperate section of code
///////////////////
function DoBlacksmithyItemUpgrade(byref character, byref item, repair_skill)
var smith_cfg_file := ReadConfigFile( ":blacksmithy:blacksmithy" );
var elem := FindConfigElem(smith_cfg_file, item.objtype);
if (!elem)
SendSysMessage(character, "That item is in full repair.");
return;
endif
var material_needed := CInt(elem.material/2);
var time_delay := elem.time;
if (time_delay > 1)
time_delay := time_delay - 1;
endif;
var item_name := elem.name;
var item_skill := elem.skill + 15;
if (item.desc["quality"])
item_skill := item_skill + 10;
endif
if (item_skill > 110)
item_skill := 110;
endif
SendSysMessage(character, "That item is in full repair.");
SendSysMessage(character, "Upgrading that item will take " + material_needed + " ingots and " + item_skill + " skill.");
if (item_skill > GetEffectiveSkill(character, repair_skill) + 20)
SendSysMessage(character, "Your skill is too low to upgrade that item.");
return;
endif
//allow the use to pick which ingots to use
SendSysMessage(character, "Target the ingots to use:");
var found_ingots := Target(character);
if (!found_ingots)
SendSysMessage(character, "Canceled.");
return;
endif
if (!IsIngot(found_ingots.objtype) )
SendSysMessage(character, "That's not an ingot!");
return;
endif
if (!ReserveItem(found_ingots) )
SendSysMessage(character, "You cannot use that right now.");
return;
endif
if (!Accessible(character, found_ingots) )
SendSysMessage(character, "You can't reach that.");
return;
endif
if (found_ingots.amount < material_needed)
SendSysMessage(character, "You need " + material_needed + " ingots. That's only " + found_ingots.amount + "!");
return;
endif
PerformBlacksmithyItemUpgrade(character, item, found_ingots, material_needed, repair_skill, item_skill, time_delay, item_name);
endfunction
///////////////////
// this function does the actual item upgrade
///////////////////
function PerformBlacksmithyItemUpgrade(character, item, found_ingots, material_needed, repair_skill, item_skill, time_delay, prefix, item_name := 0, total_points := 0)
var sx := character.x;
var sy := character.y;
var blacksmithyskill := GetEffectiveSkill( character, SKILLID_BLACKSMITHY);
var armsloreskill := GetEffectiveSkill( character, SKILLID_ARMSLORE);
var eliteprobability := 0;
if(( blacksmithyskill > 95) && (armsloreskill > 95))
eliteprobability := CINT(((blacksmithyskill - 95)/2) + ((armsloreskill - 95)/2));
if(eliteprobability > 15)
eliteprobability := 15;
endif
endif
if (character.cmdlevel > 2)
SendSysMessage(character,"Chance for elite: " + eliteprobability,color := 0x89);
endif
repeat
for i := 1 to time_delay
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
PlaySoundEffect(character, SFX_ANVIL);
sleepms(2100);
endfor
if (!found_ingots || found_ingots.amount < material_needed)
SendSysMessage(character, "You don't have enough material to continue.");
SubtractAmount(found_ingots, RandomInt(material_needed));
return;
endif
if (CheckSkill(character, repair_skill, item_skill, modify_points(character, repair_skill, total_points)) )
SubtractAmount(found_ingots, material_needed);
SendSysMessage(character, "You succeed in upgrading the item!");
if (item.desc ["quality"])
if ((RandomInt(100)+ 1) <= eliteprobability)
if(prefix)
item.name := "an elite " + prefix + " " + item_name;
else
item.name := "an elite " + item_name;
endif
item.quality := 1.5;
item.hp := item.maxhp;
var newname := SendTextEntryGump( character, "Choose a name for the elite:", 50);
if(newname)
SetName(item, "-" + newname + "-" );
endif
SendSysMessage( character, "You craft an elite " + item_name + " and place it in your pack." );
SetObjProperty(item, "craftedby", "crafted by " + character.name);
SetObjProperty(item, "elite", 1);
return;
endif
if(prefix)
item.name := "an exceptional " + prefix + " " + item_name;
else
item.name := "an exceptional " + item_name;
endif
item.quality := 1.3;
item.hp := item.maxhp;
return;
else
if(prefix)
item.name := "a quality " + prefix + " " + item_name;
else
item.name := "a quality " + item_name;
endif
item.quality := 1.1;
item.hp := item.maxhp;
if (item_skill > 120)
item_skill := 120;
endif
if (item_skill > GetEffectiveSkill(character, repair_skill) + 20)
SendSysMessage(character, "Your skill is too low to upgrade the item any further.");
return;
endif
item_skill := item_skill + 10;
if (character.cmdlevel > 2)
SendSysMessage(character,"Skill for exceptional: " + item_skill,color := 0x89);
endif
endif
else
SubtractAmount(found_ingots, RandomInt(material_needed) );
if ((blacksmithyskill < 100) || (armsloreskill < 100))
if ((RandomInt(CINT((armsloreskill+blacksmithyskill)/4))+1)==1)
SendSysMessage(character, "You ruin the item trying to upgrade it.");
DestroyItem(item);
return 0;
else
SendSysMessage(character, "You destroy some material.");
endif
else
SendSysMessage(character, "You destroy some material.");
endif
endif
until (character.x != sx || character.y != sy);
endfunction
///////////////////
// allows the user to coat the given piece of equipment with another color
///////////////////
function DoColorCoating(byref character, byref item, repair_skill)
var smith_cfg_file := ReadConfigFile( ":blacksmithy:blacksmithy" );
var elem := FindConfigElem(smith_cfg_file, item.objtype);
if (!elem)
SendSysMessage(character, "That item is in full repair.");
return;
endif
var material_needed := CInt(elem.material/2);
var time_delay := elem.time;
if (time_delay > 1)
time_delay := time_delay - 1;
endif;
SendSysMessage(character, "That item is in full repair.");
SendSysMessage(character, "Laminating that item will take " + material_needed);
if (GetEffectiveSkill(character, repair_skill) < 90)
SendSysMessage(character, "Your skill is too low to laminate that item.");
return;
endif
SendSysMessage(character, "Target some ingots to laminate the item with.");
var found_ingots := Target(character);
if (!found_ingots)
SendSysMessage(character, "Canceled.");
return;
endif
if (!ReserveItem(found_ingots) )
SendSysMessage(character, "You cannot use that right now.");
return;
endif
if (!IsIngot(found_ingots.objtype) )
SendSysMessage(character, "That's not an ingot!");
return;
endif
if (!Accessible(character, found_ingots) )
SendSysMessage(character, "You can't reach that.");
return;
endif
if (found_ingots.amount < material_needed)
SendSysMessage(character, "You need " + material_needed + " ingots. That's only " + found_ingots.amount + "!");
return;
endif
var confirm_upgrade := YesNo(character, "Laminate?");
if (!confirm_upgrade)
SendSysMessage(character, "Canceled.");
return;
endif
for i := 1 to time_delay
PlaySoundEffect(character, SFX_ANVIL);
sleep(2);
endfor
PlaySoundEffect(character, SFX_ANVIL);
if (RandomInt(1000) == 0)
SendSysMessage(character, "You fail, destroying the item.");
DestroyItem(item);
return;
elseif ( RandomInt(100) < 10 )
SendSysMessage(character, "You fail, destroying some ingots.");
SubtractAmount(found_ingots, RandomInt(material_needed) );
return;
else
SendSysMessage(character, "You succeed in laminating the item.");
item.color := found_ingots.color;
SubtractAmount(found_ingots, material_needed);
return;
endif
endfunction
///////////////////
// changes the gender of plate armor from male to female and back again
///////////////////
function ChangeGenderOfMetalArmor(byref character, byref item, repair_skill)
var smith_cfg_file := ReadConfigFile( ":blacksmithy:blacksmithy" );
var elem := FindConfigElem(smith_cfg_file, item.objtype);
if (!elem)
SendSysMessage(character, "That item is in full repair.");
return;
endif
var material_needed := CInt(elem.material/2);
var time_delay := elem.time;
if (time_delay > 1)
time_delay := time_delay - 1;
endif;
SendSysMessage(character, "That item is in full repair.");
SendSysMessage(character, "Changing the gender of that item will take " + material_needed);
if (GetEffectiveSkill(character, repair_skill) < 90)
SendSysMessage(character, "Your skill is too low to do this.");
return;
endif
SendSysMessage(character, "Target the ingots to use:");
var found_ingots := Target(character);
if (!found_ingots)
SendSysMessage(character, "Canceled.");
return;
endif
if (!IsIngot(found_ingots.objtype) )
SendSysMessage(character, "That's not an ingot!");
return;
endif
if (!ReserveItem(found_ingots) )
SendSysMessage(character, "You cannot use that right now.");
return;
endif
if (!Accessible(character, found_ingots) )
SendSysMessage(character, "You can't reach that.");
return;
endif
if (found_ingots.amount < material_needed)
SendSysMessage(character, "You need " + material_needed + " ingots. That's only " + found_ingots.amount + "!");
return;
endif
var confirm_upgrade := YesNo(character, "Change gender?");
if (!confirm_upgrade)
SendSysMessage(character, "Canceled.");
return;
endif
for i := 1 to time_delay
PlaySoundEffect(character, SFX_ANVIL);
sleep(2);
endfor
PlaySoundEffect(character, SFX_ANVIL);
if (RandomInt(1000) == 0)
SendSysMessage(character, "You fail, destroying the item.");
DestroyItem(item);
return;
elseif ( RandomInt(100) < 10 )
SendSysMessage(character, "You fail, destroying some ingots.");
SubtractAmount(found_ingots, RandomInt(material_needed) );
return;
else
SendSysMessage(character, "You succeed in modifying the item.");
case (item.graphic)
UOBJ_PLATE_BREASTPLATE:
item.graphic := UOBJ_PLATE_FEMALE;
UOBJ_PLATE_BREASTPLATE2:
item.graphic := UOBJ_PLATE_FEMALE2;
UOBJ_PLATE_FEMALE:
item.graphic := UOBJ_PLATE_BREASTPLATE;
UOBJ_PLATE_FEMALE2:
item.graphic := UOBJ_PLATE_BREASTPLATE2;
default:
SendSysMessage(character, "Um, never mind. I was thinking of a different type of item, I guess.");
return;
endcase
SubtractAmount(found_ingots, material_needed);
return;
endif
endfunction
function makelegendary(byref character, weapon)
const SOUND_EFFECT_SPARKLE := 0x1e8;
const EFFECT_SPARKLE := 0x373a;
var diff,element,chargename;
if (!weapon.movable)
return;
endif
if (!ismetalweapon(weapon))
return;
endif
diff:=getobjproperty(weapon, "elite");
if (!diff)
Sendsysmessage (character, "This is not an elite weapon");
return;
endif
if (!Accessible(character,weapon))
return;
endif
SendSysMessage(character, "Select the gem to use.");
var thegem := Target(character);
if (!thegem)
return;
endif
if (!Accessible(character,thegem))
return;
endif
if (!thegem.movable)
return;
endif
case (thegem.objtype)
0x0f13://name Summon Daemon
element:= "dismount";
chargename := "ruby";
0x0f11://name Lightening
element:= "elec";
chargename := "sapphire";
0x0f30://name Flame Strike
element:= "fire";
chargename := "diamond";
0x0f0f://name Meteor Swarm
element:= "cold";
chargename := "star sapphire";
0x0f25://name Nightsight
element:= "sil";
chargename := "amber";
0x0f15://name Protection
element:= "dragonslaying";
chargename := "citrine";
0x0f16://name Venom
element:= "poison";
chargename := "amethyst";
0x0f10://name Resurrection
chargename := "emerald";
element:= "disarm";
0x0f18://name Magic Missile
chargename := "tourmaline";
element:= "vampire";
default:
SendSysMessage(character, "You can't charge that!");
return;
endcase
var fail_damage:=randomint(100)+20;
SubtractAmount(thegem,1);
for i := 1 to 10
PerformAction(character, ANIM_ATTACK_1HAND_DOWN);
PlaySoundEffect(character, SFX_ANVIL);
sleepms(2100);
endfor
PlaySoundEffect(character, SFX_ANVIL);
sleep(1);
if (!CheckSkill(character, SKILLID_ARMSLORE, 110, modify_points(character, SKILLID_ARMSLORE, 50)))
PlaySoundEffect(character, SFX_SPELL_EXPLOSION);
PlayObjectCenteredEffect(character, FX_EXPLODE_3, 7, 0x10);
PrintTextAbovePrivate(character,"*You destroy the weapon*",character);
applyrawdamage(character, fail_damage);
DestroyItem(weapon);
elseif (!CheckSkill(character, SKILLID_BLACKSMITHY, 110, modify_points(character, SKILLID_BLACKSMITHY, 50)))
PlaySoundEffect(character, SFX_SPELL_EXPLOSION);
PlayObjectCenteredEffect(character, FX_EXPLODE_3, 7, 0x10);
PrintTextAbovePrivate(character,"*You destroy the weapon*",character);
applyrawdamage(character, fail_damage);
DestroyItem(weapon);
else
if (randomint(5)<diff)
PlaySoundEffect(character, SFX_SPELL_EXPLOSION);
PlayObjectCenteredEffect(character, FX_EXPLODE_3, 7, 0x10);
PrintTextAbovePrivate(character,"*You destroy the weapon*",character);
applyrawdamage(character, fail_damage);
DestroyItem(weapon);
return;
endif
PlayObjectCenteredEffect(character, EFFECT_SPARKLE, 7,0x10);
PlaySoundEffect(character, SOUND_EFFECT_SPARKLE);
SetObjProperty(weapon,element,5);
if (diff==1)
PrintTextAbovePrivate(character,"*You created a legendary weapon!*",character);
else
PrintTextAbovePrivate(character,"*You enchanted the legendary weapon!*",character);
endif
var newname := SendTextEntryGump( character, "Choose name for the legendary item", 50);
var itemname:=Getobjproperty(weapon,"name");
if(newname)
SetName(weapon, "-" + newname + "-" );
else
SetName(weapon, "a legendary " + itemname);
endif
diff:=CINT(diff)+1;
SetObjProperty(weapon,"elite",diff);
endif
endfunction
Re: Getting my Items to work now..
Smelting.src
Ingots.cfg
Code: Select all
////////////////
// smelting.src
//
// Turns normal or colored ore into its respective ingot.
// Some ores are harder to work with than others.
//
// Author: Racalac, 5/8/99
//
// Modifications:
// 19990525 Syz moved UOBJ_XX definitions to include/objtype.inc
//
////////////////
use uo;
use os;
use util;
include "include/client";
include "include/objtype";
include "include/yesno";
include "include/class";
include "include/trainingskill";
program smelt_that_ore ( character, ore )
if (GetObjProperty (character, "NoHit") > readgameclock() )
PrintTextAbovePrivate (character, "I feel disheartened and I am not in the mood to do so.", character);
return;
endif
var data := {};
data[1] := "mining";
data[2] := ReadGameClock();
data[3] := 45;
SetObjProperty(character, "LastUsedSkill", data );
TrainingSkill(character, data[3]);
var mount := GetEquipmentByLayer( character, 25 );
if ( mount )
PrintTextAbovePrivate( character, "You cannot smelt while mounted.", character );
return;
endif
case( ore.objtype )
UOBJ_DULLCOPPER_ORE: SmeltOre( character, ore, UOBJ_DULLCOPPER_INGOT, 0, 5 );
UOBJ_COPPER_ORE: SmeltOre( character, ore, UOBJ_COPPER_INGOT, 10, 10 );
UOBJ_BRONZE_ORE: SmeltOre( character, ore, UOBJ_BRONZE_INGOT, 20, 15 );
UOBJ_IRON_ORE: SmeltOre( character, ore, UOBJ_IRON_INGOT, 30, 20 );
UOBJ_VERITE_ORE: SmeltOre( character, ore, UOBJ_VERITE_INGOT, 35, 25 ); //weapon
UOBJ_SYNTIAN_ORE: SmeltOre( character, ore, UOBJ_SYNTIAN_INGOT, 40, 30 ); //Armour
UOBJ_AZURITE_ORE: SmeltOre( character, ore, UOBJ_AZURITE_INGOT, 45, 35 ); //both
UOBJ_EXECUTOR_ORE: SmeltOre( character, ore, UOBJ_EXECUTOR_INGOT, 45, 40 ); //weapon
UOBJ_RADLIUS_ORE: SmeltOre( character, ore, UOBJ_RADLIUS_INGOT, 45, 40 ); //Armour
UOBJ_AUGHLITE_ORE: SmeltOre( character, ore, 0x6559, 50, 45 ); //both
UOBJ_SPIRITSTONE_ORE: SmeltOre( character, ore, UOBJ_SPIRITSTONE_INGOT, 55, 45 ); //Armour
UOBJ_DEVILSCLAW_ORE: SmeltOre( character, ore, UOBJ_DEVILSCLAW_INGOT, 60, 45 ); //Weapon
UOBJ_SHADOW_ORE: SmeltOre( character, ore, UOBJ_SHADOW_INGOT, 65, 50 ); //Armour
UOBJ_GLOOM_ORE: SmeltOre( character, ore, UOBJ_GLOOM_INGOT, 70, 50 ); //both
UOBJ_DEVILSTOOTH_ORE: SmeltOre( character, ore, UOBJ_DEVILSTOOTH_INGOT, 74, 50 ); //Weapon
UOBJ_PYRITE_ORE: SmeltOre( character, ore, UOBJ_PYRITE_INGOT, 78, 50 ); //weapon
UOBJ_AGAPITE_ORE: SmeltOre( character, ore, UOBJ_AGAPITE_INGOT, 82, 55 ); //Armour
UOBJ_MALACHITE_ORE: SmeltOre( character, ore, UOBJ_MALACHITE_INGOT, 85, 55 ); //Armour
UOBJ_KRYZTAL_ORE: SmeltOre( character, ore, UOBJ_KRYZTAL_INGOT, 85, 55 ); //Weapon
UOBJ_GOLD_ORE: SmeltOre( character, ore, UOBJ_GOLD_INGOT, 87, 55 ); //Armour
UOBJ_VELVITE_ORE: SmeltOre( character, ore, UOBJ_VELVITE_INGOT, 90, 60 ); //Armour
UOBJ_NOXIOUS_ORE: SmeltOre( character, ore, UOBJ_NOXIOUS_INGOT, 92, 60 ); //Weapon
UOBJ_VALORITE_ORE: SmeltOre( character, ore, UOBJ_VALORITE_INGOT, 94, 60 ); //ARMOUR
UOBJ_FATIGUE_ORE: SmeltOre( character, ore, UOBJ_FATIGUE_INGOT, 96, 60 ); //both
UOBJ_WRAITHSBONE_ORE: SmeltOre( character, ore, UOBJ_WRAITHSBONE_INGOT, 98, 65 ); //Weapon
UOBJ_SCARLETITE_ORE: SmeltOre( character, ore, UOBJ_SCARLETITE_INGOT, 100, 65 ); //Armour
UOBJ_ONYX_ORE: SmeltOre( character, ore, UOBJ_ONYX_INGOT, 105, 65 ); //Weapon
UOBJ_CORAL_ORE: SmeltOre( character, ore, UOBJ_CORAL_INGOT, 65, 70 ); //Armour
UOBJ_SOLAR_ORE: SmeltOre( character, ore, UOBJ_SOLAR_INGOT, 80, 70 ); //Weapon
UOBJ_STARTEAR_ORE: SmeltOre( character, ore, UOBJ_STARTEAR_INGOT, 90, 60 ); //Weapon
UOBJ_SILVER_ORE: SmeltOre( character, ore, UOBJ_SILVER_INGOT, 63, 55 ); //both
UOBJ_LUNAR_ORE: SmeltOre( character, ore, UOBJ_LUNAR_INGOT, 70, 60 ); //WEAPON
UOBJ_ROYAL_ORE: SmeltOre( character, ore, UOBJ_ROYAL_INGOT, 88, 60 ); //ARMOUR
// SPECIAL ORES
UOBJ_DAEMONSFEAR_ORE: SmeltOre( character, ore, UOBJ_DAEMONSFEAR_INGOT, 95, 95 ); //weapon
UOBJ_DAEMONROCK_ORE: SmeltOre( character, ore, UOBJ_DAEMONROCK_INGOT, 100, 90 ); //Armour
UOBJ_VOLCANIC_ORE: SmeltOre( character, ore, UOBJ_VOLCANIC_INGOT, 65, 115 ); //Armour
// Specialist Ores [DWARVEN]
UOBJ_LHIOLITE_ORE: SmeltOre( character, ore, UOBJ_LHIOLITE_INGOT, 80, 150 ); //Armour
UOBJ_GREDSTINUEL_ORE: SmeltOre( character, ore, UOBJ_GREDSTINUEL_INGOT, 80, 150 ); //Armour
UOBJ_GLACIAL_ORE: SmeltOre( character, ore, UOBJ_GLACIAL_INGOT, 85, 150 ); //Armour
UOBJ_TEKRHAN_ORE: SmeltOre( character, ore, UOBJ_TEKRHAN_INGOT, 88, 150 ); //Weapon
UOBJ_HEKHRANISH_ORE: SmeltOre( character, ore, UOBJ_HEKHRANISH_INGOT, 92, 150 ); //Armour
UOBJ_DWARFISHORKANIAN_ORE: SmeltOre( character, ore, UOBJ_DWARFISHORKANIAN_INGOT, 77, 150 );//Weapon
UOBJ_AORKRHAN_ORE: SmeltOre( character, ore, UOBJ_AORKRHAN_INGOT, 100, 150 ); //Weapon
UOBJ_AUROPIAN_ORE: SmeltOre( character, ore, UOBJ_AUROPIAN_INGOT, 102, 150 ); //Armour
// Radlius Series [RADLIUS]
UOBJ_SHALRIUS_ORE: SmeltOre( character, ore, UOBJ_SHALRIUS_INGOT, 63, 55 ); //both
UOBJ_GHURONIUS_ORE: SmeltOre( character, ore, UOBJ_GHURONIUS_INGOT, 94, 90 ); //both
UOBJ_KELTRUNIUS_ORE: SmeltOre( character, ore, UOBJ_KELTRUNIUS_INGOT, 97, 90 ); //both
// Gargoyles
UOBJ_ATRINTIUM_ORE: SmeltOre( character, ore, UOBJ_ATRINTIUM_INGOT, 57, 60 ); //both
// New ores
UOBJ_MITHRIL_ORE: SmeltOre( character, ore, UOBJ_MITHRIL_INGOT, 98, 90);
UOBJ_ADMANTIUM_ORE: SmeltOre( character, ore, UOBJ_ADMANTIUM_INGOT, 98, 90);
UOBJ_EMPYREAN_ORE: SmeltOre( character, ore, UOBJ_EMPYREAN_INGOT, 95, 90);
UOBJ_ELECTRICAL_ORE: SmeltOre( character, ore, UOBJ_ELECTRICAL_INGOT, 65, 55);
UOBJ_MAGNETIC_ORE: SmeltOre( character, ore, UOBJ_MAGNETIC_INGOT, 85, 150);
UOBJ_WINTERITE_ORE: SmeltOre( character, ore, UOBJ_WINTERITE_INGOT, 80, 150);
UOBJ_MOLTEN_ORE: SmeltOre( character, ore, UOBJ_MOLTEN_INGOT, 85, 150);
UOBJ_ROSESTEEL_ORE: SmeltOre( character, ore, UOBJ_ROSESTEEL_INGOT, 80, 150);
UOBJ_CRIMSONITE_ORE: SmeltOre( character, ore, UOBJ_CRIMSONITE_INGOT, 90, 90);
UOBJ_PHOENIX_ORE: SmeltOre( character, ore, UOBJ_PHOENIX_INGOT, 90, 1450;
UOBJ_SAND: SmeltOre( character, ore, UOBJ_GLASS, 40, 30 );
UOBJ_GOLD_COIN: MakeGoldBars( character, ore );
default: SendSysMessage( character, "You can't smelt that." );
endcase
endprogram
function SmeltOre( character, ore, ingot, difficulty, points )
if (!ReserveItem(ore))
SendSysMessage(character, "You cannot use that right now.");
return;
endif
if ( !Accessible( character, ore ) )
SendSysMessage( character, "You can't reach that." );
return;
endif
if (ore.movable == 0 )
SendSysMessage(character, "Its locked down.");
return;
endif
var near_items := ListItemsNearLocation(character.x, character.y, character.z,2);
foreach forge in near_items
if ( ((forge.objtype >= UOBJ_FORGE_START) && (forge.objtype <= UOBJ_FORGE_END)) || (forge.objtype == UOBJ_SMALL_FORGE) )
if ( CheckSkill( character, SKILLID_MINING, difficulty, modify_points( character, SKILLID_MINING, points) ) )
var created_ingot:=SafeCreateInContainer(character.backpack, ingot, GetAmount( ore ) );
if(created_ingot)
if( character.cmdlevel < 3 )
SetObjProperty(created_ingot,"hidden_fresh",1);
endif
DestroyItem( ore );
PlaySoundEffect(character, 34);
sleepms(5000);
SendSysMessage( character, "You create some ingots and place them in your pack." );
if (character.cmdlevel>2)
SetObjProperty( created_ingot, "Createdby", character.acctname );
endif
return;
else
SendSysMessage(character, "Your backpack is full!");
return;
endif
else
var subore := RandomInt(5)+1;
if(subore > ore.amount)
subore := ore.amount;
endif
SubtractAmount( ore, subore );
PlaySoundEffect(character, 34);
sleepms(5000);
SendSysMessage( character, "You destroy some ore." );
return;
endif
endif
endforeach
SendSysMessage( character, "You must be near a forge to smelt ore!" );
endfunction
///////////////////
// Searches the area around the character for a forge
///////////////////
function FindForgeInArea(character)
foreach item in ListItemsNearLocation(character.x, character.y, character.z,2)
if ( item.objtype >= UOBJ_FORGE_START && item.objtype <= UOBJ_FORGE_END )
return 1;
elseif (item.objtype == UOBJ_SMALL_FORGE)
return 1;
endif
endforeach
return 0;
endfunction
///////////////////
// Creates gold bars out of gold coins
///////////////////
function MakeGoldBars(character, gold)
if (!ReserveItem(gold))
SendSysMessage(character, "You cannot use that right now.");
return;
endif
if ( !Accessible( character, gold ) )
SendSysMessage( character, "You can't reach that." );
return;
endif
if (!FindForgeInArea(character))
SendSysMessage(character, "You must be near a forge to smelt gold.");
return;
endif
if (!YesNo(character,"Melt coins?"))
SendSysMessage(character, "Canceled.");
return;
endif
if (CheckSkill( character, SKILLID_BLACKSMITHY, 40, modify_points(character, SKILLID_BLACKSMITHY, 0) ))
var theamount;
if (gold.amount < 100)
SendSysMessage(character, "It doesn't look like you have enough gold");
return;
else
theamount := CInt(gold.amount /100);
endif
var ingots := SafeCreateInContainer( character.backpack, UOBJ_GOLD_INGOT, theamount );
if( character.cmdlevel < 3 )
SetObjProperty(ingots,"hidden_fresh",1);
endif
if (character.cmdlevel>2)
SetObjProperty( ingots, "GMcrafted", character.acctname );
SetObjProperty( ingots, "Createdby", character.acctname );
endif
if (!ingots)
PrintTextAbovePrivate(character, "*Your backpack is full!*", character);
return;
endif
SubtractAmount( gold, CInt(theamount*100) );
SendSysMessage( character, "You create some gold ingots and place them in your pack." );
else
SubtractAmount( gold, RandomInt(30) + 3 );
SendSysMessage( character, "You destroy some material." );
endif
endfunction
function SafeCreateInContainer(cont,objtype,amt)
var theitem := CreateItemAtLocation( 1, 1,-50,objtype, amt );
var succ := MoveItemToContainer(theitem,cont);
if( !succ || !theitem )
DestroyItem(theitem);
return 0;
endif
return theitem;
endfunction
function CheckStack(item,cont)
var proparray1,proparray2, array1, array2,same;
foreach object in EnumerateItemsInContainer(cont)
if(object.objtype == item.objtype && object.serial != item.serial)
same := 1;
proparray1 := GetObjPropertyNames(item);
foreach prop in proparray1
array1.append(prop,GetObjProperty(item,prop));
endforeach
proparray2 := GetObjPropertyNames(object);
foreach prop in proparray2
array2.append(prop,GetObjProperty(object,prop));
endforeach
if( len(proparray1) != len(proparray2) )
same := 0;
endif
foreach prop in proparray1
if(array1[prop] != array2[prop])
same := 0;
endif
endforeach
foreach prop in proparray2
if(array1[prop] != array2[prop])
same := 0;
endif
endforeach
if(same)
var amt := item.amount;
if( !DestroyItem(item) )
return 0;
endif
AddAmount(object,amt);
return 1;
endif
endif
endforeach
return 1;
endfunction
Code: Select all
#Special Defs:
#newColour $420$ - Makes item same colour as ingots.
#reqProp testProp - Makes ingot require usage of a smithy tool with CProp "testProp" set to true.
#reqEnch testEnch - Makes ingot require usage of a smithy tool with enchantment "testEnch".
#noSkillSub 1 - If the easier smithing for higher smiths is enabled, this disables it for the specific ingot (Radlius, Scarletite).
#
#Notes:
#MinSkill -Minimum skill to use this ingot
#bonusSkill -Extra skill requirement added to items default (Decimals!)
#newColour -Colour of new item
#bonusPoints -Added to the points the char gets for crafting the item
#bonusHp -Amount of extra HP for an item with this ore
#prefix -Prefix to name
#suffix -suffix to name
#enchantments -Sea sReadme.txt
//Dull Copper
ingot 0x6550
{
MinSkill 0
bonusSkill 75
newColour 0x03EA
bonusPoints 50
bonusHp 0
prefix dull copper
suffix
enchantments DullCopperIngot
damageMod 0
armourMod 0
}
//Copper
ingot 0x6551
{
MinSkill 10
bonusSkill 80
newColour 0x0602
bonusPoints 60
bonusHp 0
prefix copper
suffix
enchantments CopperIngot
damageMod 0
armourMod 0
}
//Bronze
ingot 0x6552
{
MinSkill 20
bonusSkill 82
newColour 0x045E
bonusPoints 70
bonusHp 0
prefix bronze
suffix
enchantments BronzeIngot
damageMod 0
armourMod 0
}
//Iron
ingot 0x6553
{
MinSkill 30
bonusSkill 84
newColour 0x0
bonusPoints 80
bonusHp 0
prefix iron
suffix
enchantments IronIngot
damageMod 0
armourMod 0
}
//Verite
ingot 0x6554
{
MinSkill 35
bonusSkill 81
newColour 0x07D1
bonusPoints 90
bonusHp 0
prefix verite
suffix
enchantments VeriteIngot
damageMod 1
armourMod 0
}
//Syntian
ingot 0x6555
{
MinSkill 40
bonusSkill 85
newColour 0x031C
bonusPoints 100
bonusHp 0
prefix syntian
suffix
enchantments SyntianIngot
damageMod 0
armourMod 1
}
//Azurite
ingot 0x6556
{
MinSkill 45
bonusSkill 90
newColour 0x4DF
bonusPoints 105
bonusHp 0
prefix azurite
suffix
enchantments AzuriteIngot
damageMod 1
armourMod 1
}
//Executor
ingot 0x6557
{
MinSkill 45
bonusSkill 90
newColour 0x0345
bonusPoints 105
bonusHp 0
prefix executor
suffix
enchantments ExecutorIngot
damageMod 2
armourMod 0
}
//Radlius
ingot 0x6558
{
MinSkill 45
bonusSkill 90
newColour 0x0173
bonusPoints 105
bonusHp 0
prefix radlius
suffix
enchantments RadliusIngot
damageMod 0
armourMod 2
}
//Aughlite
ingot 0x6559
{
MinSkill 50
bonusSkill 90
newColour 0x0281
bonusPoints 108
bonusHp 0
prefix aughlite
suffix
enchantments AughliteIngot
damageMod 1
armourMod 2
}
//Spirit Stone
ingot 0x655A
{
MinSkill 55
bonusSkill 91
newColour 0x07A1
bonusPoints 110
bonusHp 0
prefix spirit stone
suffix
enchantments SpiritStoneIngot
damageMod 1
armourMod 3
}
//Devils Claw
ingot 0x655B
{
MinSkill 60
bonusSkill 92
newColour 0x01B8
bonusPoints 113
bonusHp 0
prefix devils claw
suffix
enchantments DevilsClawIngot
damageMod 3
armourMod 1
}
//Shadow
ingot 0x655C
{
MinSkill 65
bonusSkill 93
newColour 0x0770
bonusPoints 114
bonusHp 0
prefix shadow
suffix
enchantments ShadowIngot
damageMod 2
armourMod 4
}
//Gloom
ingot 0x655D
{
MinSkill 70
bonusSkill 94
newColour 0x02F0
bonusPoints 115
bonusHp 0
prefix gloom
suffix
enchantments GloomIngot
damageMod 2
armourMod 4
}
//Devils Tooth
ingot 0x655E
{
MinSkill 74
bonusSkill 95
newColour 0x0029
bonusPoints 116
bonusHp 0
prefix devils tooth
suffix
enchantments DevilsToothIngot
damageMod 3
armourMod 2
}
//Pyrite
ingot 0x655F
{
MinSkill 78
bonusSkill 96
newColour 0x6B8
bonusPoints 117
bonusHp 0
prefix pyrite
suffix
enchantments PyriteIngot
damageMod 3
armourMod 2
}
//Agapite
ingot 0x6560
{
MinSkill 82
bonusSkill 97
newColour 0x03EC
bonusPoints 118
bonusHp 0
prefix agapite
suffix
enchantments AgapiteIngot
damageMod 3
armourMod 6
}
//Malachite
ingot 0x6561
{
MinSkill 85
bonusSkill 98
newColour 0x852
bonusPoints 119
bonusHp 0
prefix malachite
suffix
enchantments MalachiteIngot
damageMod 3
armourMod 6
}
//Kryztal
ingot 0x6562
{
MinSkill 85
bonusSkill 99
newColour 0x07FE
bonusPoints 120
bonusHp 0
prefix kryztal
suffix
enchantments KryztalIngot
damageMod 6
armourMod 0
}
//Gold
ingot 0x6563
{
MinSkill 87
bonusSkill 99
newColour 0x07CC
bonusPoints 110
bonusHp 0
prefix golden
suffix
enchantments GoldIngot
damageMod 3
armourMod 6
}
//Velvite
ingot 0x6564
{
MinSkill 90
bonusSkill 100
newColour 0x078C
bonusPoints 122
bonusHp 0
prefix velvite
suffix
enchantments DaemonspineIngot
damageMod 4
armourMod 8
}
//Snograz
ingot 0x6565
{
MinSkill 90
bonusSkill 100
newColour 2444
bonusPoints 122
bonusHp 0
prefix noxious
suffix
enchantments SnograzIngot
damageMod 7
armourMod 0
}
//Valorite
ingot 0x6566
{
MinSkill 92
bonusSkill 100
newColour 0x0539
bonusPoints 124
bonusHp 0
prefix valorite
suffix
enchantments ValoriteIngot
damageMod 3
armourMod 9
}
//Fatigue
ingot 0x6567
{
MinSkill 94
bonusSkill 101
newColour 0x026D
bonusPoints 126
bonusHp 0
prefix fatigue
suffix
enchantments FatigueIngot
damageMod 4
armourMod 9
}
//Wraiths Bone
ingot 0x6568
{
MinSkill 96
bonusSkill 102
newColour 0x0810
bonusPoints 128
bonusHp 0
prefix wraiths bone
suffix
enchantments WraithsBoneIngot
damageMod 6
armourMod 8
}
//Scarletite
ingot 0x6569
{
MinSkill 98
bonusSkill 103
newColour 2097
bonusPoints 128
bonusHp 0
prefix scarletite
suffix
enchantments ScarletiteIngot
damageMod 3
armourMod 10
}
//Onyx
ingot 0x656A
{
MinSkill 99
bonusSkill 105
newColour 0x0455
bonusPoints 130
bonusHp 0
prefix onyx
suffix
enchantments OnyxIngot
damageMod 10
armourMod 5
}
//Solar
ingot 0x657B
{
MinSkill 80
bonusSkill 97
newColour 0x0038
bonusPoints 117
bonusHp 0
prefix solar
suffix
enchantments SolarIngot
damageMod 5
armourMod 0
}
//Startear
ingot 0x657C
{
MinSkill 90
bonusSkill 100
newColour 0x0800
bonusPoints 119
bonusHp 0
prefix startear
suffix
enchantments StartearIngot
damageMod 6
armourMod 0
}
//Silver
ingot 0x657D
{
MinSkill 63
bonusSkill 92
newColour 0x0482
bonusPoints 113
bonusHp 0
prefix silver
suffix
enchantments SilverIngot
damageMod 1
armourMod 4
}
//Lunar
ingot 0x657E
{
MinSkill 70
bonusSkill 94
newColour 2045
bonusPoints 115
bonusHp 0
prefix lunar
suffix
enchantments LunarIngot
damageMod 5
armourMod 0
}
//Royal
ingot 0x657F
{
MinSkill 88
bonusSkill 99
newColour 2457
bonusPoints 118
bonusHp 0
prefix royal
suffix
enchantments RoyalIngot
damageMod 5
armourMod 7
}
///////////////////////
/////SPECIAL ORES//////
///////////////////////
//Daemon's Fear [SPECIAL]
ingot 0x656C
{
MinSkill 90
bonusSkill 110
newColour 0x07E5
bonusPoints 130
bonusHp 0
prefix daemon's fear
suffix
enchantments DaemonsFearIngot
damageMod 10
armourMod 8
}
//Daemon Rock [SPECIAL]
ingot 0x656D
{
MinSkill 95
bonusSkill 110
newColour 0x0799
bonusPoints 130
bonusHp 0
prefix daemon rock
suffix
enchantments DaemonRockIngot
damageMod 9
armourMod 15
}
///////////////////////
///////////////////////
////Specialist Ores////
///////////////////////
///////////////////////
//Lhiolite [Dwarven]
ingot 0x656F
{
MinSkill 80
bonusSkill 100
newColour 0x07AB
bonusPoints 150
bonusHp 0
prefix lhiolite
suffix
enchantments LhioliteIngot
damageMod 3
armourMod 7
}
//Gredstinuel [Dwarven]
ingot 0x6570
{
MinSkill 80
bonusSkill 100
newColour 0x0780
bonusPoints 150
bonusHp 0
prefix gredstinuel
suffix
enchantments GredstinuelIngot
damageMod 4
armourMod 7
}
//Dwarven Olupius [Dwarven]
ingot 0x6571
{
MinSkill 85
bonusSkill 100
newColour 0x07C9
bonusPoints 150
bonusHp 0
prefix glacial
suffix
enchantments DwarvenOlupiusIngot
damageMod 5
armourMod 9
}
//Tekrhan [Dwarven]
ingot 0x6572
{
MinSkill 88
bonusSkill 100
newColour 2969
bonusPoints 150
bonusHp 0
prefix tekrhan
suffix
enchantments TekrhanIngot
damageMod 8
armourMod 5
}
//Hekhranish [Dwarven]
ingot 0x6573
{
MinSkill 90
bonusSkill 100
newColour 1939
bonusPoints 150
bonusHp 0
prefix hekhranish
suffix
enchantments HekhranishIngot
damageMod 4
armourMod 7
}
//Dwarfish Orkanian [Dwarven]
ingot 0x6574
{
MinSkill 77
bonusSkill 100
newColour 0x080D
bonusPoints 150
bonusHp 0
prefix dwarfish orkanian
suffix
enchantments DwarfishOrkanianIngot
damageMod 5
armourMod 2
}
//Aorkrhan [Dwarven]
ingot 0x6575
{
MinSkill 98
bonusSkill 100
newColour 0x0794
bonusPoints 150
bonusHp 0
prefix aorkrhan
suffix
enchantments AorkrhanIngot
damageMod 8
armourMod 6
}
//Auropian [Dwarven]
ingot 0x6576
{
MinSkill 99
bonusSkill 100
newColour 2796
bonusPoints 150
bonusHp 0
prefix auropian
suffix
enchantments AuropianIngot
damageMod 5
armourMod 13
}
//////////////////
//Radlius Series//
//////////////////
//Shalrius [Radlius]
ingot 0x6577
{
MinSkill 63
bonusSkill 50
newColour 2962
bonusPoints 108
bonusHp 0
prefix shalrius
suffix
enchantments ShalriusIngot
damageMod 4
armourMod 5
}
//Ghuronius [Radlius]
ingot 0x6578
{
MinSkill 94
bonusSkill 50
newColour 2963
bonusPoints 130
bonusHp 0
prefix ghuronius
suffix
enchantments GhuroniusIngot
damageMod 8
armourMod 10
}
//Keltrunius [Radlius]
ingot 0x6579
{
MinSkill 97
bonusSkill 50
newColour 2959
bonusPoints 120
bonusHp 0
prefix keltrunius
suffix
enchantments KeltruniusIngot
damageMod 9
armourMod 13
}
/////////////
//Gargoyles//
/////////////
//Atrintium [Gargoyles]
ingot 0x657A
{
MinSkill 57
bonusSkill 100
newColour 2961
bonusPoints 100
bonusHp 0
prefix atrintium
suffix
enchantments AtrintiumIngot
damageMod 3
armourMod 5
}
ingot 0xf57
{
MinSkill 98
bonusSkill 100
newColour 2592
bonusPoints 100
bonusHp 250
prefix empyrean
suffix
enchantments EmpyreanIngot
damageMod 8
armourMod 15
}
ingot 0xf58
{
MinSkill 70
bonusSkill 110
newColour 2794
bonusPoints 100
bonusHp 0
prefix electrical
suffix
enchantments ElectricalIngot
damageMod 3
armourMod 0
}
ingot 0xf59
{
MinSkill 90
bonusSkill 110
newColour 2797
bonusPoints 100
bonusHp 0
prefix magnetic
suffix
enchantments MagneticIngot
damageMod 8
armourMod 0
}
ingot 0xf5a
{
MinSkill 90
bonusSkill 110
newColour 2083
bonusPoints 100
bonusHp 0
prefix molten
suffix
enchantments MoltenIngot
damageMod 8
armourMod 0
}
ingot 0x656b
{
MinSkill 70
bonusSkill 100
newColour 0x7EC
bonusPoints 100
bonusHp 0
prefix coral
suffix
enchantments StartearIngot
damageMod 3
armourMod 0
}
ingot 0x656E
{
MinSkill 70
bonusSkill 100
newColour 0x079C
bonusPoints 100
bonusHp 0
prefix volcanic
suffix
enchantments VolcanicIngot
damageMod 3
armourMod 0
}
ingot 0xF5B
{
MinSkill 85
bonusSkill 100
newColour 2730
bonusPoints 150
bonusHp 0
prefix winterite
suffix
enchantments WinteriteIngot
damageMod 3
armourMod 8
}
ingot 0x6580
{
MinSkill 80
bonusSkill 105
newColour 2065
bonusPoints 128
bonusHp 0
prefix rosesteel
suffix
enchantments RosesteelIngot
damageMod 4
armourMod 7
}
ingot 0x658A
{
MinSkill 90
bonusSkill 110
newColour 1645
bonusPoints 128
bonusHp 0
prefix crimsonite
suffix
enchantments CrimsoniteIngot
damageMod 5
armourMod 8
}
ingot 0x64F7
{
MinSkill 98
bonusSkill 110
newColour 2053
bonusPoints 128
bonusHp 0
prefix mythril
suffix
enchantments MythrilIngot
damageMod 5
armourMod 15
}
ingot 0x64F9
{
MinSkill 100
bonusSkill 110
newColour 2975
bonusPoints 128
bonusHp 0
prefix adamantium
suffix
enchantments DaemonSpineIngot
damageMod 7
armourMod 18
}
ingot 0xfffd
{
MinSkill 98
bonusSkill 110
newColour 2445
bonusPoints 128
bonusHp 10
prefix phoenix
suffix
enchantments PhoenixIngot
damageMod 10
armourMod 20
}
Re: Getting my Items to work now..
UOBJ_PHOENIX_ORE: SmeltOre( character, ore, UOBJ_PHOENIX_INGOT, 90, 1450; <--- Just before the ; close the parentheses...
Re: Getting my Items to work now..
Yep figures it'd be a tiny error like that... I need to get my eyes checked.. Thanks script compiled 100% and It works perfectly, next project it clerical rites and religions.. yippe...