Area Changes and other fixes
added areas and ccoh, fixed some areas to work with crafting fixed some on death issues added server entry/ooc
This commit is contained in:
@@ -1,204 +0,0 @@
|
||||
void GetNextItemPossessedBy(object oPC, string sItemTag);
|
||||
void CreateAnObject(string sResource, object oPC, int iStackSize);
|
||||
void CreateAMap(string sResource, object oPC, int iStackSize, int iMapSkill);
|
||||
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef);
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
object oArea = GetArea(oPC);
|
||||
string sAreaResRef = GetResRef(oArea);
|
||||
string sAreaName = GetName(oArea);
|
||||
|
||||
int iMapSkill = GetCampaignInt("UOACraft","iMapSkill",oPC);
|
||||
int iMapChance = iMapSkill;
|
||||
|
||||
|
||||
|
||||
string sComponent1 = "";
|
||||
string sComponent2 = "";
|
||||
string sComponent3 = "";
|
||||
string sComponent1Name = "";
|
||||
string sComponent2Name = "";
|
||||
string sComponent3Name = "";
|
||||
string sComponentResRef = "";
|
||||
int iComponent1 = 0;
|
||||
int iComponent2 = 0;
|
||||
int iComponent3 = 0;
|
||||
int iComponent1Stackable = 0;
|
||||
int iComponent2Stackable = 0;
|
||||
int iComponent3Stackable = 0;
|
||||
int iStackSize = 0;
|
||||
int iFailStackable = 0;
|
||||
string sItemResRef = "";
|
||||
string sFailResRef = "";
|
||||
|
||||
|
||||
|
||||
if (iMapChance <350)
|
||||
{
|
||||
iMapChance = GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*5;
|
||||
iMapChance = iMapChance +(GetAbilityScore(oPC,ABILITY_WISDOM)*3);
|
||||
iMapChance = iMapChance +(GetAbilityScore(oPC,ABILITY_DEXTERITY)*2);
|
||||
iMapChance = iMapChance * 3;
|
||||
if (iMapChance >350) iMapChance = 350;
|
||||
if (iMapSkill > iMapChance) iMapChance = iMapSkill;
|
||||
}
|
||||
|
||||
|
||||
object oInk = GetItemPossessedBy(oPC,"ink_mapmaker");
|
||||
if (oInk==OBJECT_INVALID)
|
||||
{
|
||||
FloatingTextStringOnCreature("You must have cartographers ink in order to draw a map!",oPC,FALSE);
|
||||
CreateItemOnObject("papr_blank_silk",oPC,1);
|
||||
return;
|
||||
}
|
||||
int iInk = GetNumStackedItems(oInk);
|
||||
if (iInk>1)
|
||||
{
|
||||
iInk--;
|
||||
SetItemStackSize(oInk,iInk);
|
||||
}
|
||||
else
|
||||
{
|
||||
DestroyObject(oInk);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (Random(1000) > iMapChance)
|
||||
{
|
||||
DelayCommand(6.0,FloatingTextStringOnCreature("You fail to chart the locale properly, resulting in a useless map.",oPC,FALSE));
|
||||
DelayCommand(6.1,CreateAnObject("inscribedmap001",oPC,1));
|
||||
return;
|
||||
}
|
||||
|
||||
DelayCommand(6.5,CreateAMap("inscribedmap",oPC,1,iMapChance));
|
||||
int iSkillGain=0;
|
||||
|
||||
if (Random(1000)>=iMapSkill)
|
||||
{
|
||||
if (d10(1)+1 >= iMapChance/100) iSkillGain = 1;
|
||||
}
|
||||
|
||||
//Ensure no more than 1 skill gain every 10 seconds to avoid token droppage.
|
||||
if (iSkillGain ==1)
|
||||
{
|
||||
if (GetLocalInt(oPC,"iSkillGain")!= 0)
|
||||
{
|
||||
iSkillGain = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetLocalInt(oPC,"iSkillGain",99);
|
||||
DelayCommand(10.0,SetLocalInt(oPC,"iSkillGain",0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (iSkillGain ==1)
|
||||
{
|
||||
string sOldSkill = "";
|
||||
string sOldSkill2 = "";
|
||||
iMapSkill++;
|
||||
sOldSkill2 = IntToString(iMapSkill);
|
||||
sOldSkill = "."+GetStringRight(sOldSkill2,1);
|
||||
if (iMapSkill > 9)
|
||||
{
|
||||
sOldSkill = GetStringLeft(sOldSkill2,GetStringLength(sOldSkill2)-1)+sOldSkill;
|
||||
}
|
||||
else
|
||||
{
|
||||
sOldSkill = "0"+sOldSkill;
|
||||
}
|
||||
if (iMapSkill <= 1000)
|
||||
{
|
||||
//DelayCommand(6.0,SetTokenPair(oPC,14,12,iAlchemySkill));
|
||||
DelayCommand(6.0,SetCampaignInt("UOACraft","iMapSkill",iMapSkill,oPC));
|
||||
DelayCommand(6.1,SendMessageToPC(oPC,"======================================"));
|
||||
DelayCommand(6.2,SendMessageToPC(oPC,"Your skill in cartography has gone up!"));
|
||||
DelayCommand(6.3,SendMessageToPC(oPC,"Current cartography skill : "+ sOldSkill+"%"));
|
||||
DelayCommand(6.4,SendMessageToPC(oPC,"======================================"));
|
||||
if (GetLocalInt(GetModule(),"_UOACraft_XP")!=0) DelayCommand(5.9,GiveXPToCreature(oPC,GetLocalInt(GetModule(),"_UOACraft_XP")));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//sResRef = "inscribedmap"
|
||||
|
||||
/*
|
||||
papr_blank_silk
|
||||
ink_mapmaker
|
||||
string sMapAreaTag = GetLocalString(oMap,"sMapAreaTag");
|
||||
string sMapAreaName = GetLocalString(oMap,"sMapAreaName");
|
||||
float fMapUsedX = GetLocalFloat(oMap,"fMapPositionX");
|
||||
float fMapUsedY = GetLocalFloat(oMap,"fMapPositionY");
|
||||
float fMapUsedZ = GetLocalFloat(oMap,"fMapPositionZ");
|
||||
float fMapOrientation = GetFacing(oPC);
|
||||
object oMapArea = GetObjectByTag(sMapAreaTag);
|
||||
//May need to filter out all non-area object types in case of
|
||||
//tag-related issues.. i.e. area tag matching a sword item tag.
|
||||
|
||||
vector vMap = Vector(fMapUsedX,fMapUsedY,fMapUsedZ);
|
||||
int iMapSkill = GetLocalInt(oMap,"iMapUsedSkill");
|
||||
location lPC = Location(oMapArea,vMap,fMapOrientation);
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CreateAnObject(string sResource, object oPC, int iStackSize)
|
||||
{
|
||||
CreateItemOnObject(sResource,oPC,iStackSize);
|
||||
return;
|
||||
}
|
||||
|
||||
void GetNextItemPossessedBy(object oPC, string sItemTag)
|
||||
{
|
||||
object oTemp = GetItemPossessedBy(oPC,sItemTag);
|
||||
DestroyObject(oTemp);
|
||||
return;
|
||||
}
|
||||
|
||||
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef)
|
||||
{
|
||||
object oTemp = GetItemPossessedBy(oPC,sItemTag);
|
||||
int iStackCount = GetNumStackedItems(oTemp);
|
||||
int iTemp = iCount - iStackCount;
|
||||
iStackCount = iStackCount-iCount;
|
||||
DestroyObject(oTemp);
|
||||
if (iStackCount > 0)
|
||||
{
|
||||
SendMessageToPC(oPC,"You should get back "+IntToString(iStackCount));
|
||||
DelayCommand(1.0,CreateAnObject(sStackResRef,oPC,iStackCount));
|
||||
}
|
||||
// this next line *should* recursively call this function if the number of
|
||||
// stacked items does not meet the required number of items to be destroyed.
|
||||
if (iTemp > 0) DelayCommand(1.0,GetNextStackedItem(oPC,sItemTag,iTemp, iMode, sStackResRef));
|
||||
return;
|
||||
}
|
||||
|
||||
void CreateAMap(string sResource, object oPC, int iStackSize, int iMapSkill)
|
||||
{
|
||||
object oArea = GetArea(oPC);
|
||||
string sAreaTag = GetTag(oArea);
|
||||
string sAreaName = GetName(oArea);
|
||||
vector vPC = GetPosition(oPC);
|
||||
float fMapX = vPC.x;
|
||||
float fMapY = vPC.y;
|
||||
float fMapZ = vPC.z;
|
||||
object oMap = CreateItemOnObject(sResource,oPC,iStackSize);
|
||||
SetLocalString(oMap,"sMapAreaTag",sAreaTag);
|
||||
SetLocalString(oMap,"sMapAreaName",sAreaName);
|
||||
SetLocalFloat(oMap,"fMapPositionX",fMapX);
|
||||
SetLocalFloat(oMap,"fMapPositionY",fMapY);
|
||||
SetLocalFloat(oMap,"fMapPositionZ",fMapZ);
|
||||
SetLocalInt(oMap,"iMapUsedSkill",iMapSkill);
|
||||
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user