Initial commit
Adding all of the current content for Anphillia Unlimited.
This commit is contained in:
117
_module/nss/cnr_deposit_ou.nss
Normal file
117
_module/nss/cnr_deposit_ou.nss
Normal file
@@ -0,0 +1,117 @@
|
||||
/////////////////////////////////////////////////////////
|
||||
//
|
||||
// Craftable Natural Resources (CNR) by Festyx
|
||||
//
|
||||
// Name: cnr_deposit_ou
|
||||
//
|
||||
// Desc: When a player uses a deposit (clay or sand),
|
||||
// they must possess a shovel. They will dig
|
||||
// something up (clay or sand) some % of the time.
|
||||
//
|
||||
// Author: David Bobeck 03Feb03
|
||||
// 09May03 re-coded to work like gem mining.
|
||||
//
|
||||
/////////////////////////////////////////////////////////
|
||||
#include "cnr_recipe_utils"
|
||||
|
||||
void SpawnNewDiggableDeposit(string sDepositTag, location locDeposit)
|
||||
{
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE, sDepositTag, locDeposit);
|
||||
DestroyObject(OBJECT_SELF);
|
||||
}
|
||||
|
||||
void DoPostDiggingSuccessCheck(object oUser, location locUserAtStart, object oDeposit)
|
||||
{
|
||||
DeleteLocalInt(oDeposit, "CnrStopRapidClicks");
|
||||
|
||||
location locUser = GetLocation(oUser);
|
||||
if (locUser != locUserAtStart)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
object oMisc = OBJECT_INVALID;
|
||||
|
||||
// chance of success
|
||||
// 5%/CON Modifier Success Chance
|
||||
//if ((GetAbilityScore(oUser, ABILITY_CONSTITUTION) + (GetAbilityModifier(ABILITY_CONSTITUTION, oUser) * 2)) > d100(1))
|
||||
if (cnr_d100(1) <= CNR_FLOAT_MISC_MINING_DEPOSIT_CHANCE_OF_SUCCESS_PERCENTAGE)
|
||||
{
|
||||
string sDepositTag = GetTag(oDeposit);
|
||||
string sMiscTag = GetLocalString(GetModule(), sDepositTag + "_MiscTag");
|
||||
if (sMiscTag != "")
|
||||
{
|
||||
oMisc = CreateObject(OBJECT_TYPE_ITEM, sMiscTag, locUser);
|
||||
FloatingTextStringOnCreature(CNR_TEXT_YOU_DUG_UP_A + GetName(oMisc), oUser);
|
||||
|
||||
ActionPickUpItem(oMisc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD, 1.0);
|
||||
string sFloat;
|
||||
int nFloat = d6(1);
|
||||
if (nFloat == 1) {sFloat = CNR_TEXT_DEPOSIT_MUMBLE_1;}
|
||||
else if (nFloat == 2) {sFloat = CNR_TEXT_DEPOSIT_MUMBLE_2;}
|
||||
else if (nFloat == 3) {sFloat = CNR_TEXT_DEPOSIT_MUMBLE_3;}
|
||||
else if (nFloat == 4) {sFloat = CNR_TEXT_DEPOSIT_MUMBLE_4;}
|
||||
else if (nFloat == 5) {sFloat = CNR_TEXT_DEPOSIT_MUMBLE_5;}
|
||||
else if (nFloat == 6) {sFloat = CNR_TEXT_DEPOSIT_MUMBLE_6;}
|
||||
DelayCommand(1.0, FloatingTextStringOnCreature(sFloat, oUser, FALSE));
|
||||
if (!GetIsResting(oUser) && !GetIsInCombat(oUser))
|
||||
DelayCommand(2.0, DoPlaceableObjectAction(oDeposit, PLACEABLE_ACTION_USE));
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int bStopRapidClicks = GetLocalInt(OBJECT_SELF, "CnrStopRapidClicks");
|
||||
if (bStopRapidClicks == TRUE) return;
|
||||
SetLocalInt(OBJECT_SELF, "CnrStopRapidClicks", TRUE);
|
||||
|
||||
object oDeposit = OBJECT_SELF;
|
||||
object oUser = GetLastUsedBy();
|
||||
|
||||
object oShovel = CnrGetItemByTag("cnrShovel", oUser);
|
||||
if (oShovel == OBJECT_INVALID)
|
||||
{
|
||||
FloatingTextStringOnCreature(CNR_TEXT_YOU_MUST_POSSESS_A_SHOVEL + GetName(OBJECT_SELF), oUser);
|
||||
SetLocalInt(OBJECT_SELF, "CnrStopRapidClicks", FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
// there's a chance the shovel may break
|
||||
if (cnr_d100(1) <= CNR_FLOAT_MISC_MINING_DEPOSIT_SHOVEL_BREAKAGE_PERCENTAGE)
|
||||
{
|
||||
DestroyObject(oShovel);
|
||||
FloatingTextStringOnCreature(CNR_TEXT_YOU_HAVE_BROKEN_YOUR_SHOVEL, oUser);
|
||||
SetLocalInt(OBJECT_SELF, "CnrStopRapidClicks", FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
location locDeposit = GetLocation(OBJECT_SELF);
|
||||
string sDepositTag = GetTag(OBJECT_SELF);
|
||||
|
||||
// Sometimes the deposit will get used up
|
||||
if (cnr_d100(1) <= CNR_FLOAT_MISC_MINING_DEPOSIT_BREAKAGE_PERCENTAGE)
|
||||
{
|
||||
if (CNR_FLOAT_MISC_MINING_DEPOSIT_RESPAWN_TIME_SECS > 0.0)
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), OBJECT_SELF);
|
||||
object oSpawner = CreateObject(OBJECT_TYPE_PLACEABLE, "cnrobjectspawner", locDeposit);
|
||||
AssignCommand(oSpawner, DelayCommand(CNR_FLOAT_MISC_MINING_DEPOSIT_RESPAWN_TIME_SECS, SpawnNewDiggableDeposit(sDepositTag, locDeposit)));
|
||||
DestroyObject(OBJECT_SELF, 0.5); // provide time for death effect
|
||||
FloatingTextStringOnCreature(CNR_TEXT_THATS_THE_END_OF_THAT, oUser);
|
||||
}
|
||||
SetLocalInt(OBJECT_SELF, "CnrStopRapidClicks", FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
AssignCommand(oUser, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 3.0));
|
||||
PlaySound("as_cv_mineshovl1");
|
||||
|
||||
location locUser = GetLocation(oUser);
|
||||
AssignCommand(oUser, DelayCommand(3.0, DoPostDiggingSuccessCheck(oUser, locUser, oDeposit)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user