But i have no idea how to do
If someone could gimme a hint i would appreciate it very much
Code: Select all
Thanks.Code: Select all
Thanks.Code: Select all
Thanks.Code: Select all
Item 0x1c15
{
Name yewlog
desc yew log%s%
graphic 0x1bdd
color 0x002c
Weight 1/2
VendorSellsFor 10
VendorBuysFor 1
}
Code: Select all
use cfgfile;
use uo;
use os;
use util;
include "include/client";
include "include/attributes";
include "include/string";
include "include/objtype";
include "include/canAccess";
include "include/utility";
include "include/dist";
include "include/toolWear";
include "include/noto";
const UACTION_CHOP := 0x0d;
const FX_POISON_GAS := 0x113a;
var bowcraftconfigfile := ReadConfigFile("::bowcraft");
var mex;
var mey;
program use_axe(me, axe)
EraseObjProperty(me, "IsMeditating");
EraseObjProperty(me, "HealTimer");
if(!can_access(me, axe))
return;
endif
if(!ReserveItem(axe))
return;
endif
if(!IsAxEquipped(me, axe))
SendSysMessage(me,"You have to equip that to lumberjack!");
return;
endif
var tree := TreeNearby(me, axe);
if(!tree)
return;
endif
SendSysMessage(me, "You begin chopping...");
var checker := 0;
mex := me.x;
mey := me.y;
var mount;
repeat
mount := GetEquipmentByLayer(me, 25);
if(mount)
SendSysMessage(me,"you cannot chop wood while on horseback.");
return;
endif
if(!axe)
return;
endif
PerformAction(me, UACTION_CHOP);
PlaySoundEffect(me, SFX_SKILL_LUMBERJACK);
sleepms(2500);
checker := Do_Chops(me, axe, tree);
until(checker == 1);
endprogram
function Do_Chops(me, axe, tree)
var difficulty := GetHarvestDifficulty("wood", tree.x, tree.y, tree.objtype, me.realm);
if(difficulty == error)
SendSysMessage(me, "There's not enough wood here to chop");
return 1;
endif
if((me.x != mex) || (me.y != mey))
SendSysMessage(me,"You stop chopping.");
return 1;
endif
var points := CInt((GetEffectiveSkill(me, SKILLID_LUMBERJACKING) * 2) + 10);
// This is where I modified the original lumberjack script.
// I do a CheckSkill with my new definition of dificulty (the var diffi) based on the type of tree being chopped.
var diffi := 0;
case (tree.objtype)
0x0cc9 : diffi := 95; // spider tree
0x12b8 : diffi := 85; // yew tree
0x12b9 : diffi := 85; // yew tree
0x12ba : diffi := 85; // yew tree
0x12bb : diffi := 85; // yew tree
0x0cdd : diffi := 75; // Oak tree
0x0cda : diffi := 75; // Oak tree
0x0ce0 : diffi := 70; // walnut tree
0x0cd8 : diffi := 65; // Cedar tree
0x0cd6 : diffi := 65; // Cedar tree
0x0ce6 : diffi := 60; // Cypress tree
0x0c9e : diffi := 40; // Ash tree
endcase;
if (GetAttribute (me, "Lumberjacking") < diffi)
SendSysMessage(me, "You fail to find any usable wood here.");
return 1;
endif
// OK here is where I am going to add my custom log case statement
case (tree.objtype)
0x12b8 : logtype := 0x1c15; // yew log
0x12b9 : logtype := 0x1c15; // yew log
0x12ba : logtype := 0x1c15; // yew log
0x12bb : logtype := 0x1c15; // yew log
default: logtype := 0x1bdd; // Regular plain old logs
endcase;
// End of my modification (sort of)
if(CheckSkill(me, SKILLID_LUMBERJACKING, diffi, points))
var wood_amount := HarvestResource( "wood", tree.x, tree.y, 1, 10, me.realm );
if(wood_amount == 0)
SendSysMessage(me, "There's not enough wood here to chop.");
return 1;
endif
if(!CreateItemInBackpack(me, logtype, wood_amount))
SendSysMessage(me, "Your backpack is too full.");
return 1;
else
SendSysMessage(me, "You put some logs in your backpack");
CheckToolWear (me, axe, SKILLID_LUMBERJACKING);
return 0;
endif
else
SendSysMessage(me, "You fail to get any usable wood.");
return 0;
endif
endfunction
function TreeNearby(me, axe)
SendSysMessage( me, "Select something to chop." );
var tree := TargetCoordinates( me );
if(!tree)
SendSysMessage(me, "Cancelled");
return 0;
endif
var distt := coordist( me.x, me.y, tree.x, tree.y );
if(distt > 1 )
if(!tree.item.container)
SendSysMessage(me,"That is too far away");
return 0;
endif
endif
if(is_furniture(tree.item.objtype, tree.item))
chopfurniture(me, tree.item);
return 0;
elseif(is_tree(tree.objtype))
var difficulty := GetHarvestDifficulty( "wood", tree.x, tree.y, tree.objtype, me.realm );
if(difficulty == error)
SendSysMessage(me, "There's not enough wood here to chop.");
return 0;
endif
return tree;
else
use_blade(me, axe, tree.item);
return 0;
endif
endfunction
function is_furniture(theobj, thing)
var miscobjtypes := { 0x7007, 0xa30, 0xa34, 0xa38, 0xfae, 0x9e40};
if((theobj >= 0x9a8) && (theobj <= 0x9ab))
return 1;
elseif((theobj >= 0xa2a) && (theobj <= 0xa2c))
return 1;
elseif((theobj >= 0xa4c) && (theobj <= 0xa53))
return 1;
elseif((theobj >= 0xa97) && (theobj <= 0xa9e))
return 1;
elseif((theobj >= 0xb2c) && (theobj <= 0xb40))
return 1;
elseif((theobj >= 0xb49) && (theobj <= 0xb90))
return 1;
elseif((theobj >= 0xe3c) && (theobj <= 0xe43))
return 1;
elseif((theobj >= 0xe7c) && (theobj <= 0xe80))
return 1;
elseif((theobj >= 0xf65) && (theobj <= 0xf77))
return 1;
elseif(theobj in miscobjtypes)
return 1;
elseif(GetObjProperty(thing, "ItemsCreatedSerials"))
return 1;
else
return 0;
endif
endfunction
function is_tree(theobj)
if((theobj >= 0x0c99) && (theobj <= 0x0cea))
return 1;
elseif((theobj >= 0x0cf3) && (theobj <= 0x0d03))
return 1;
elseif((theobj >= 0x0d41) && (theobj <= 0x0dab))
return 1;
elseif((theobj >= 0x12b6) && (theobj <= 0x12c7))
return 1;
elseif((theobj >= 0x0d37) && (theobj <= 0x0d38))
return 1;
elseif((theobj == 0x0c9e) || (theobj == 0x0ca8) || (theobj == 0x0caa) || (theobj == 0x0cab))
return 1;
else
return 0;
endif
endfunction
function IsAxEquipped(me,axe)
if((!Accessible(me,axe)) || (Distance(me, axe) > 1))
return 0;
endif
foreach item in ListEquippedItems(me)
if (axe.serial == item.serial )
return 1;
endif
endforeach
return EquipItem(me, axe );
endfunction
function chopfurniture(me, theobj)
if(!can_access(me, theobj))
return;
endif
var sign;
if(GetObjProperty(theobj, "lockeddown") || GetObjProperty(theobj, "secure"))
SendSysMessage(me, "You cannot destroy secure or locked down items.");
return;
endif
if(theobj.objtype == 0x7007)
var houseserial := GetObjProperty(theobj, "houseserial");
sign := SystemFindObjectBySerial(houseserial);
if(GetObjProperty(sign, "barrelserial") == theobj.serial)
EraseObjProperty(sign, "barrelserial");
SendSysMessage(me, "you cannot destroy that while it is locked down.");
return;
endif
endif
if(!Accessible(me, theobj))
SendSysMessage(me, "you cant reach that");
return;
endif
if(me.multi)
if(GetObjProperty((me.multi), "ownerserial") != me.serial)
var house := me.multi;
foreach thing in (house.components)
if((thing.objtype == 0x0bd0) || (thing.objtype == 0x0bd2))
sign := thing;
break;
endif
endforeach
var coowner := 0;
var coownerlist := GetObjProperty(sign, "coownerlist");
foreach thing in coownerlist
if(thing == me.serial)
coowner := 1;
break;
endif
endforeach
if(!coowner)
SendSysMessage(me, "this does not belong to you!");
return;
endif
endif
endif
foreach thing in EnumerateItemsInContainer(theobj)
if(theobj.container)
MoveItemToContainer(thing, theobj.container);
else
MoveObjectToLocation(thing, theobj.x, theobj.y, theobj.z, theobj.realm, MOVEITEM_FORCELOCATION);
endif
endforeach
if(theobj.usescript == ":tinkering:tinkerTraps")
var traptype := GetObjProperty(theobj,"trap_type");
var trapstrength := GetObjProperty(theobj,"trap_strength");
var trapperserial := CInt(GetObjProperty(theobj, "trapper"));
var trapper := SystemFindObjectBySerial(trapperserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
if(trapper)
SetObjProperty(me, "LastHit", {trapper.name, trapper.serial, "trapped chest" });
SetScriptController(trapper);
endif
case (traptype)
"1" : PlaySoundEffect(me, SFX_224);
var dmg := (RandomInt(20) + CInt(trapstrength));
SendSysMessage(me, "You set off a needle trap!");
ApplyDamage(me, dmg);
theobj.usescript := "";
EraseObjProperty( theobj, "trap_type" );
EraseObjProperty( theobj, "trap_strength" );
"2" : start_script(":traps:poisonTrapTriggered", {me, theobj, "You set off a poison trap!", trapstrength});
"3" : PlaySoundEffect(me, SFX_208);
SendSysMessage(me, "You set off an explosion trap!");
PlayObjectCenteredEffect( me, FX_EXPLODE_3, 10,10);
var dmg := (RandomInt(20) + CInt(trapstrength));
ApplyRawDamage(me, dmg);
theobj.usescript := "";
EraseObjProperty( theobj, "trap_type" );
EraseObjProperty( theobj, "trap_strength" );
endcase
endif
var created := GetObjProperty(theobj, "ItemsCreatedSerials");
if(created)
var holder;
foreach thing in created
holder := SystemFindObjectBySerial(thing);
if(holder)
DestroyItem(holder);
endif
endforeach
else
DestroyItem(theobj);
endif
PlaySoundEffect(me, 0x13a);
return;
endfunction
function use_blade(who, blade, use_on)
if(!can_access(who,use_on))
return;
endif
if(!ReserveItem(use_on))
return;
endif
var checkme := use_on.objtype;
if((checkme == UOBJ_LOGS) || (checkme == 0x1bd7))
CarveLogs(who, blade, use_on);
elseif(use_on.npctemplate == "sheep")
process_wool(who, blade, use_on);
elseif(use_on.objtype == UOBJ_CORPSE)
ReleaseItem(blade);
Carve_Corpse(who, use_on);
elseif(is_fish(checkme))
CarveFish(who, blade, use_on);
else
SendSysMessage(who, "I don't know how to use those items together.");
endif
endfunction
function process_wool(who, blade, sheep)
if(sheep.graphic == 207)
sheep.graphic := 223;
CreateItemInContainer(who.backpack, 0xf125, 3);
CheckToolWear (who, blade, SKILLID_TAILORING);
else
SendSysMessage(who,"That sheep is not yet ready to be shorn.");
endif
endfunction
function is_fish(theobj)
if((theobj >= UOBJ_FISH_START) && (theobj <= UOBJ_FISH_END) )
return 1;
elseif ((theobj >= UOBJ_SFISH_START) && (theobj <= UOBJ_SFISH_END))
return 1;
else
return 0;
endif
endfunction
function CarveFish(who, blade, use_on)
if((!ReserveItem(use_on)) || (use_on.movable == 0))
SendSysMessage(who, "You cannot use that.");
return;
endif
var num_steaks := (4 * use_on.amount);
PlaySoundEffect(who, SFX_57);
if(DestroyItem(use_on))
CreateItemInBackpack(who, UOBJ_FISHSTEAK, num_steaks);
CheckToolWear (who, blade, SKILLID_FISHING);
SendSysMessage(who, "You carve the fish steaks and put them in your backpack");
endif
sleep(1);
endfunction
function Carve_Corpse(who, cadaver)
Detach();
if((!Accessible(who, cadaver)) or (!CheckLineOfSight(who, cadaver)))
SendSysMessage(who, "You cannot use that");
return;
endif
if(Distance(who, cadaver) > 2)
SendSysMessage(who, "You are not close enough");
return;
endif
var c_type := cadaver.corpsetype;
if(GetObjProperty(cadaver, "cut") == "1")
SendSysMessage( who, "You cannot get any more from this corpse." );
foreach thing in EnumerateItemsInContainer(cadaver)
MoveObjectToLocation(thing, cadaver.x, cadaver.y, cadaver.z, cadaver.realm, MOVEITEM_FORCELOCATION);
endforeach
DestroyItem(cadaver);
elseif((c_type == 400) || (c_type == 401))
var beardlist := {0x203e, 0x203f, 0x2040, 0x2041, 0x204b, 0x204c, 0x204d };
var hairlist := {0x2044, 0x2045, 0x2046, 0x2047, 0x2048, 0x2049, 0x204a, 0x203b, 0x203c, 0x203d };
foreach thing in EnumerateItemsInContainer(cadaver)
if((thing.objtype in hairlist) or (thing.objtype in beardlist))
DestroyItem(thing);
else
MoveObjectToLocation(thing, cadaver.x, cadaver.y, cadaver.z, cadaver.realm, MOVEITEM_FORCELOCATION);
endif
endforeach
var partsarray := {};
var part;
part := CreateItemAtLocation(cadaver.x-1, cadaver.y, cadaver.z, 0x1da0, 1, who.realm);
partsarray.append(part);
SetObjProperty(part, "serial", GetObjProperty(cadaver, "serial"));
var aname := cadaver.name;
aname["A corpse of"] := "";
part.name := "The head of " + aname;
part := CreateItemAtLocation(cadaver.x-1, cadaver.y, cadaver.z, 0x1da1, 1, who.realm);
partsarray.append(part);
part := CreateItemAtLocation(cadaver.x-1, cadaver.y+1, cadaver.z, 0x1da2, 1, who.realm);
partsarray.append(part);
part := CreateItemAtLocation(cadaver.x+1, cadaver.y, cadaver.z, 0x1da3, 1, who.realm);
partsarray.append(part);
part := CreateItemAtLocation(cadaver.x+1, cadaver.y+1, cadaver.z, 0x1da4, 1, who.realm);
partsarray.append(part);
part := CreateItemAtLocation(cadaver.x, cadaver.y, cadaver.z, 0x1d9f, 1, who.realm);
partsarray.append(part);
var blood := CreateItemAtLocation(cadaver.x, cadaver.y, cadaver.z, 0x122a, 1, who.realm);
blood.movable := 0;
DestroyItem(cadaver);
sleep(40);
foreach thing in partsarray
if(!thing.container)
DestroyItem(thing);
endif
endforeach
sleep(20);
DestroyItem(blood);
else
if(c_type == 223)
CreateItemInContainer(cadaver, 0x9f1, 2);
SendSysMessage(who, "You place the items on the corpse.");
var theblood := CreateItemAtLocation(cadaver.x, cadaver.y, cadaver.z, UOBJ_BLOOD, 1, who.realm);
sleep(30);
DestroyItem(cadaver);
sleep(30);
DestroyItem(theblood);
return;
endif
var conf := ReadConfigFile(":*:npcdesc");
var tmplate := GetObjProperty(cadaver, "npctemplate");
if(!tmplate)
SendSysMessage(who, "You cut the corpse, but fail to find anything useful.", 3, 40);
var theblood := CreateItemAtLocation(cadaver.x, cadaver.y, cadaver.z, UOBJ_BLOOD, 1, who.realm);
sleep(30);
DestroyItem(cadaver);
sleep(30);
DestroyItem(theblood);
return;
else
SetObjProperty(cadaver, "cut","1");
var corpseitm := conf[tmplate]."corpseitm";
var corpseamt := conf[tmplate]."corpseamt";
print("I: " + corpseitm);
print("A: " + corpseamt);
if(!corpseitm)
print("error");
var theblood := CreateItemAtLocation(cadaver.x, cadaver.y, cadaver.z, UOBJ_BLOOD, 1, who.realm);
sleep(30);
DestroyItem(cadaver);
sleep(30);
DestroyItem(theblood);
return;
endif
var i := 1;
corpseitm := SplitWords(corpseitm);
corpseamt := SplitWords(corpseamt);
foreach thing in corpseitm
CreateItemInContainer(cadaver, thing, Cint(corpseamt[i]));
i := i + 1;
endforeach
SendSysMessage(who, "You place the items on the corpse.");
var theblood := CreateItemAtLocation(cadaver.x, cadaver.y, cadaver.z, UOBJ_BLOOD, 1, who.realm);
sleep(30);
DestroyItem(cadaver);
sleep(30);
DestroyItem(theblood);
endif
endif
endfunction
function CarveLogs(who, blade, logs)
if(logs.movable == 0)
SendSysMessage(who, "You cannot use those logs.");
return;
endif
if(!Accessible(who, logs))
SendSysMessage(who, "You cannot use that");
return;
endif
if(!logs.container)
if(Distance(who, logs) > 2)
SendSysMessage(who, "That is too far away");
return;
endif
endif
var selection := SelectMenuItem2(who, "BowcraftCarving");
if(!selection)
return;
endif
var what := selection.objtype;
if(!Accessible(who, logs))
SendSysMessage(who, "I can't access the logs to make that.");
return;
endif
var objectconfig := FindConfigElem(bowcraftconfigfile, what);
if(!objectconfig)
return;
endif
var material := CInt(GetConfigString(objectconfig, "Material"));
if(material > logs.amount)
SendSysMessage(who, "You don't have enough logs to make that.");
return;
endif
var difficulty := GetConfigInt(objectconfig, "Difficulty");
var pointvalue := GetConfigInt(objectconfig, "PointValue");
var bow := 0;
Detach();
PlaySoundEffect(who, 0x5a);
PerformAction(who, 0x021);
sleep(2);
PlaySoundEffect(who, 0x5a);
PerformAction(who, 0x021);
sleep(2);
PlaySoundEffect(who, 0x5a);
PerformAction(who, 0x021);
sleep(2);
PlaySoundEffect(who, 0x5a);
PerformAction(who, 0x021);
sleep(2);
if(CheckSkill(who, SKILLID_BOWCRAFT, difficulty, pointvalue))
if(what == UOBJ_SHAFTS)
var amt := logs.amount;
if(DestroyItem(logs))
CreateItemInBackpack(who, what, amt);
CheckToolWear (who, blade, SKILLID_BOWCRAFT);
SendSysMessage(who, "You create some shafts and place them in your pack." );
endif
elseif (what == UOBJ_BOW)
if(SubtractAmount(logs, material))
bow := CreateItemInBackpack(who, what);
CheckToolWear (who, blade, SKILLID_BOWCRAFT);
SendSysMessage(who, "You create a bow and place it in your pack.");
SetName(bow, "a bow");
endif
elseif (what == UOBJ_XBOW)
if(SubtractAmount(logs, material))
bow := CreateItemInBackpack(who, what);
CheckToolWear (who, blade, SKILLID_BOWCRAFT);
SendSysMessage(who, "You create a crossbow and place it in your pack.");
SetName(bow, "a crossbow");
endif
elseif (what == UOBJ_HEAVY_XBOW)
if(SubtractAmount(logs, material))
bow := CreateItemInBackpack(who, what);
CheckToolWear (who, blade, SKILLID_BOWCRAFT);
SendSysMessage(who, "You create a heavy crossbow and place it in your pack.");
SetName(bow, "a heavy crossbow");
endif
else
SendSysMessage(who, "I don't know how to make that.");
return;
endif
var myskill := CInt(GetEffectiveSkill(who, SKILLID_BOWCRAFT));
var modpts := 0;
if(myskill >= difficulty)
modpts := (myskill - difficulty);
endif
var rint := RandomInt(100);
if(modpts >= rint)
ExceptionalFameMod(who, myskill, difficulty, Cint(pointvalue / 2));
setquality(who, bow);
endif
else
SubtractAmount(logs, (RandomInt(5) + 1));
SendSysMessage(who, "You destroy some logs.");
endif
endfunction
function setquality(who, bow)
var tname := TruncateArticle(bow.name);
if(CInt(GetEffectiveSkill(who, SKILLID_BOWCRAFT)) >= 99)
bow.name := "an exceptional " + tname + " [crafted by " + who.name + "]";
else
bow.name := "an exceptional " + tname;
endif
bow.quality := bow.quality + 0.2;
bow.hp := bow.maxhp;
SendSysMessage(who, "You created an exceptional item.");
endfunction
function ExceptionalFameMod(who, skill, diff, points)
if(skill > diff - 20)
diff := diff + 20;
if((skill - diff) <= 5)
points := points;
elseif((skill - diff) <= 10)
points := (points * 3) / 4;
elseif((skill - diff) <= 15)
points := points / 2;
elseif((skill - diff) <= 20)
points := points / 4;
else
points := 0;
endif
points := Cint(points);
var fame := Cint(GetObjProperty(who, "Fame"));
var famegain := fame + points;
SetObjProperty(who, "Fame", famegain);
var msgtext := "You have ";
if(points < 0)
msgtext := msgtext + "lost ";
points := Abs(points);
else
msgtext := msgtext + "gained ";
endif
if(points > 150)
msgtext := msgtext + "a great amount of ";
elseif(points > 125)
msgtext := msgtext + "alot of ";
elseif(points > 75)
msgtext := msgtext + "a good amount of ";
elseif(points > 30)
msgtext := msgtext + "some ";
elseif(points > 0)
msgtext := msgtext + "a little ";
else
return 0;
endif
msgtext := msgtext + "Fame.";
SendSysMessage(who, msgtext);
var karma := Cint(GetObjProperty(who, "Karma"));
var kmod := GetKarmaLevel(karma);
var fmod := GetFameLevel(famegain);
var newtitle := nototitles[ (kmod) ];
newtitle := "The " + CStr(newtitle[fmod]) + " ";
if(newtitle["None"])
newtitle := "";
endif
if(fmod == 5)
if(who.gender == 1)
newtitle := newtitle + "Lady ";
else
newtitle := newtitle + "Lord ";
endif
endif
if(newtitle != who.title_prefix)
who.title_prefix := newtitle;
SendSysMessage(who, "you are now known as " + newtitle + who.name);
endif
SetNotoTitle(who, karma, fame);
endif
endfunction
Code: Select all
var diffi := 0; Code: Select all
if (GetAttribute (me, "Lumberjacking") < diffi)
SendSysMessage(me, "You fail to find any usable wood here.");
return 1;
endif
Code: Select all
Compiling: Pol/pkg/skills/lumberjacking/lumberjack.src
Variable logtype has not been declared on line 86.
Error compiling statement at Pol\pkg\skills\lumberjacking\
lumberjack.src, Line 86
Error compiling statement at Pol\pkg\skills\lumberjacking\
lumberjack.src, Line 85
Error in function 'Do_Chops', File: Pol\pkg\skills\lumberj
acking\lumberjack.src, Line 86
Error in function Do_Chops
File: Pol\pkg\skills\lumberjacking\lumberjack.src, Line 86
Execution aborted due to: Error compiling file
Error in function Do_Chops
File: Pol\pkg\skills\lumberjacking\lumberjack.src, Line 87
Execution aborted due to: Error compiling file
Code: Select all
endif
var points := CInt((GetEffectiveSkill(me, SKILLID_LUMBERJACKING) * 2) + 10);
var diffi := 0;
case (tree.objtype)
0x0cc9 : diffi := 95; // dark tree
0x0ce6 : diffi := 85; // oak tree
0x0ce0 : diffi := 75; // pine tree
0x0cd8 : diffi := 65; // sun tree
0x0c9e : diffi := 55; // ash tree
0x12b8 : diffi := 45; // yew tree
endcase;
if (GetAttribute (me, "Lumberjacking") < diffi)
SendSysMessage(me, "You fail to find any usable wood here.");
return 1;
endif
case (tree.objtype)
0x12b8 : logtype := 0x4000; // yew log <-- Line 87
0x0c9e : logtype := 0x4001; // ash log
0x0cd8 : logtype := 0x4002; // sun log
0x0ce0 : logtype := 0x4003; // pine log
0x0ce6 : logtype := 0x4004; // oak log
0x0cc9 : logtype := 0x4005; // dark log
default: logtype := 0x1bdd; // Regular plain old logs
endcase;
Code: Select all
////////////////////////////////////////////
////////Logs and Woodtypes////////////////
///////////////////////////////////////////
const UOBJ_YEW_LOGS := 0x4000;
const UOBJ_ASH_LOGS := 0x4001;
const UOBJ_SUN_LOGS := 0x4002;
const UOBJ_PINE_LOGS := 0x4003;
const UOBJ_OAK_LOGS := 0x4004;
const UOBJ_DARK_LOGS := 0x4005;
/////////////////////////////////
///////TREES//////////////////////
//////////////////////////////////
const UOBJ_DARK_TREE := 0x0cc9;
const UOBJ_OAK_TREE := 0x0ce6;
const UOBJ_PINE_TREE := 0x0ce0;
const UOBJ_SUN_TREE := 0x0cd8;
const UOBJ_ASH_TREE := 0x0c9e;
const UOBJ_YEW_TREE := 0x12b8;
Code: Select all
// OK here is where I am going to add my custom log case statement
var logtype := 0x1bdd; // Defaukt to regular logs if not in case.
case (tree.objtype)
Code: Select all
created_item.color := logs.color;
created_item.name := "a " + log_name + " " + TruncateArticle(item_name) + " [crafted by " + character.name + "]";
Code: Select all
Item 0x4001
{
Name yewlog
desc yew log%s%
graphic 0x1bdd
color 0x002c
Weight 1/2
VendorSellsFor 10
VendorBuysFor 1
}
Code: Select all
if (wood == UOBJ_LOGS)
return;
elseif (wood == UOBJ_WOOD_OAK)
bow.maxhp_mod := bow.maxhp_mod + 120;
bow.hp := bow.maxhp_mod;
bow.quality := bow.quality - 0.3;
bow.dmg_mod := bow.dmg_mod - 3;
bow.color := 0x002c; // Set to your colour for oak logs
SetName(bow, ("an oaken " + tname) );