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

213 lines
11 KiB
Plaintext

void DoDig(object oPC, location lChest, int iMapLevel, object oMap);
void DoFailDig(object oPC, object oMap, location lTemp);
void DoChest(object oPC, location lTemp, int iMapLevel, object oMap);
void CreatePlaceable(location lTemp, string sResRef, float fDelay);
void CreatePlaceable2(location lTemp, string sResRef, float fDelay, int iMapLevel, object oPC);
void main()
{
object oPC = OBJECT_SELF;
if (GetLocalInt(oPC,"iAmDiggingMap")!=0)
{
FloatingTextStringOnCreature("You are already digging a treasure map!",oPC,FALSE);
return;
}
object oMapUsed = GetLocalObject(oPC,"oMapUsed");
if (GetStringLeft(GetResRef(oMapUsed),10)!="_uoa_tmap_")
{
FloatingTextStringOnCreature("That is not a decoded treasure map!",oPC,FALSE);
DeleteLocalObject(oPC,"oMapUsed");
return;
}
SetLocalInt(oPC,"iAmDiggingMap",99);
AssignCommand(GetArea(oPC),DelayCommand(31.0,DeleteLocalInt(oPC,"iAmDiggingMap")));
DeleteLocalObject(oPC,"oMapUsed");
if (GetLocalInt(oMapUsed,"iAmInUse")!=0) return;
SetLocalInt(oMapUsed,"iAmInUse",99);
AssignCommand(oMapUsed,DelayCommand(30.1,DeleteLocalInt(oMapUsed,"iAmInUse")));
//Determine Skills and chances
int iDigSkill = GetCampaignInt("UOACraft","iDigSkill",oPC);
int iDigChance=iDigSkill;
if (iDigChance < 350)
{
iDigChance = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
iDigChance = iDigChance + (GetAbilityScore(oPC,ABILITY_CONSTITUTION)*3);
iDigChance = iDigChance + (GetAbilityScore(oPC,ABILITY_DEXTERITY)*2);
iDigChance = iDigChance*3;
if (iDigChance >350) iDigChance = 350;
if (iDigSkill>iDigChance)iDigChance=iDigSkill;
}
////////////////////////////////////////////////////////////////
int iMapLevel = StringToInt(GetStringRight(GetResRef(oMapUsed),2));
int iDigChanceNeeded = iMapLevel*100;
if (iDigChance<iDigChanceNeeded)
{
FloatingTextStringOnCreature("You are not skilled enough in digging to unearth this treasure!",oPC,FALSE);
return;
}
string sMapTag = GetTag(oMapUsed);
string sTemp;
sMapTag = GetStringRight(sMapTag,GetStringLength(sMapTag)-10);
sTemp ="0000"+sMapTag;
sMapTag = GetStringRight(sTemp,4);
string sMapWaypointTag = "_UOA_TCHEST_NUMBER_"+sMapTag;
object oMapWaypoint = GetWaypointByTag(sMapWaypointTag);
if (oMapWaypoint==OBJECT_INVALID)
{
SendMessageToPC(oPC,"Chest location not valid!");
SendMessageToAllDMs(GetName(oPC)+" cannot locate treasure map location do to invalid location: "+sMapWaypointTag);
return;
}
object oPCArea = GetArea(oPC);
object oMapArea = GetArea(oMapWaypoint);
if (oPCArea!=oMapArea)
{
DoFailDig(oPC,oMapUsed,GetLocation(oPC));
return;
}
location lChestLocation = GetLocation(oMapWaypoint);
location lPCLocation = GetLocation(oPC);
float fDistance = GetDistanceBetweenLocations(lChestLocation,lPCLocation);
AssignCommand(oMapUsed,DelayCommand(0.1,DoDig(oPC,lChestLocation,iMapLevel,oMapUsed)));
}
void DoDig(object oPC, location lChest, int iMapLevel, object oMap)
{
object oArea = GetArea(oPC);
object oTemp;
location lTemp = GetLocation(oPC);
int iCanDigChest = 0;
float fMaxDigDistance = IntToFloat(11-iMapLevel)*1.2;
if (GetDistanceBetweenLocations(lChest,lTemp)<=fMaxDigDistance) iCanDigChest=99;
DoFailDig(oPC, oMap, lTemp);
if (iCanDigChest==99) DoChest(oPC,lTemp,iMapLevel,oMap);
return;
}
void DoFailDig(object oPC, object oMap, location lTemp)
{
//Digging animation for the hole
AssignCommand(oPC,DelayCommand(0.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(0.2,PlaySound("as_cv_chiseling1")));
AssignCommand(oPC,DelayCommand(0.3,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(0.6,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(0.9,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(1.2,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(1.5,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(2.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oMap,DelayCommand(3.0,CreatePlaceable(lTemp,"_uoa_thole001",13.0)));
AssignCommand(oPC,DelayCommand(3.2,PlaySound("as_cv_chiseling1")));
AssignCommand(oPC,DelayCommand(3.3,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(3.6,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(4.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(6.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oPC,DelayCommand(6.2,PlaySound("as_cv_mineshovl1")));
AssignCommand(oPC,DelayCommand(8.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(10.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oPC,DelayCommand(12.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(12.2,PlaySound("as_cv_mineshovl1")));
AssignCommand(oPC,DelayCommand(14.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oMap,DelayCommand(15.0,CreatePlaceable(lTemp,"uoa_thole_002",1800.0)));
AssignCommand(oPC,DelayCommand(16.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(18.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oPC,DelayCommand(18.2,PlaySound("as_cv_mineshovl1")));
AssignCommand(oPC,DelayCommand(20.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oPC,DelayCommand(22.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(24.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oPC,DelayCommand(24.2,PlaySound("as_cv_mineshovl1")));
AssignCommand(oPC,DelayCommand(26.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,2.0)));
AssignCommand(oPC,DelayCommand(28.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
AssignCommand(oPC,DelayCommand(30.1,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,2.0)));
return;
}
void DoChest(object oPC, location lTemp, int iMapLevel, object oMap)
{
//Chest Animation for success
location lTemp2;
vector vTemp2 = GetPositionFromLocation(lTemp);
vTemp2.z = vTemp2.z+0.1;
lTemp2 = Location(GetArea(oPC),vTemp2,GetFacingFromLocation(lTemp));
AssignCommand(oMap,DelayCommand(24.0,CreatePlaceable(lTemp,"_uoa_unuse_chest",3.5)));
AssignCommand(oMap,DelayCommand(20.1,PlaySound("as_cv_woodframe1")));
AssignCommand(oMap,DelayCommand(21.1,PlaySound("as_cv_woodframe1")));
AssignCommand(oMap,DelayCommand(22.1,PlaySound("as_cv_woodframe2")));
AssignCommand(oMap,DelayCommand(26.0,CreatePlaceable(lTemp2,"_uoa_unuse_chest",3.5)));
AssignCommand(oMap,DelayCommand(23.1,PlaySound("as_cv_woodframe2")));
AssignCommand(oMap,DelayCommand(24.1,PlaySound("as_cv_woodframe1")));
AssignCommand(oMap,DelayCommand(25.1,PlaySound("as_cv_woodframe2")));
AssignCommand(oMap,DelayCommand(28.0,CreatePlaceable(lTemp,"_uoa_unuse_ch001",4.5)));
AssignCommand(oPC,DelayCommand(28.3,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oPC,DelayCommand(28.6,SetFacingPoint(GetPositionFromLocation(lTemp))));
AssignCommand(oMap,DelayCommand(26.1,PlaySound("as_cv_woodframe1")));
AssignCommand(oMap,DelayCommand(27.1,PlaySound("as_cv_woodframe2")));
AssignCommand(oMap,DelayCommand(28.1,PlaySound("as_cv_woodframe2")));
AssignCommand(oMap,DelayCommand(29.1,PlaySound("as_cv_woodframe1")));
AssignCommand(oMap,DelayCommand(30.0,CreatePlaceable2(lTemp2,"_uoa_treas_chest",2100.0,iMapLevel,oPC)));
AssignCommand(oMap,DelayCommand(30.1,PlaySound("as_cv_woodframe2")));
AssignCommand(oMap,DelayCommand(35.0,DestroyObject(oMap,1.0)));
return;
}
void CreatePlaceable(location lTemp, string sResRef, float fDelay)
{
object oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,sResRef,lTemp,FALSE);
if (fDelay!=0.0) DestroyObject(oTemp,fDelay);
AssignCommand(oTemp,DelayCommand(0.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(0.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
AssignCommand(oTemp,DelayCommand(2.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(2.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
AssignCommand(oTemp,DelayCommand(4.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(4.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
if (GetResRef(oTemp)=="_uoa_thole001")
{
AssignCommand(oTemp,DelayCommand(6.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(6.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
AssignCommand(oTemp,DelayCommand(8.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(8.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
AssignCommand(oTemp,DelayCommand(10.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(10.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
AssignCommand(oTemp,DelayCommand(12.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(12.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
}
if (GetResRef(oTemp)=="uoa_thole_002")
{
AssignCommand(oTemp,DelayCommand(6.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(6.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
AssignCommand(oTemp,DelayCommand(8.1,PlaySound("as_na_x2iccrmb7")));
AssignCommand(oTemp,DelayCommand(8.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL,FALSE),GetLocation(OBJECT_SELF))));
}
return;
}
void CreatePlaceable2(location lTemp, string sResRef, float fDelay, int iMapLevel, object oPC)
{
object oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,sResRef,lTemp,FALSE);
if (fDelay!=0.0) DestroyObject(oTemp,fDelay);
SetLocalInt(oTemp,"iChestLevel",iMapLevel);
SetLocalObject(oTemp,"oDiggingPC",oPC);
SetLocalInt(oTemp,"iAmTrapped",99);
SetLocalInt(oTemp,"iAmLocked",99);
AssignCommand(oTemp,ExecuteScript("_map_chst_spawn",oTemp));
AssignCommand(oTemp,DelayCommand(2.0,ExecuteScript("_open_tchest",oTemp)));
return;
}