void main() { object oPC=GetLastDamager(); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY),OBJECT_SELF); if (!GetIsPC(oPC)) { return; } int nCurrentHour = (GetCalendarYear()-1)*12*28*24 + (GetCalendarMonth()-1)*28*24 + (GetCalendarDay()-1)*24 + GetTimeHour(); int nLastSpawnHour = GetLocalInt(OBJECT_SELF,"LAST_SPAWN_HOUR"); int nSpawnDelay = 0; if (nCurrentHour > (nLastSpawnHour + nSpawnDelay)) { SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",0); } if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) { SendMessageToPC(oPC,"There is nothing here to mine"); return; } int nOldhp=GetLocalInt(OBJECT_SELF,"hp"); if (nOldhp==0) (nOldhp=300); int nNewhp=GetCurrentHitPoints(OBJECT_SELF); int nDamage=nOldhp-nNewhp; SetLocalInt(OBJECT_SELF,"hp",nNewhp); if (nDamage>12) { nDamage=12; } // debug //SpeakString("You did "+IntToString(nDamage)); int nChance=d20()+nDamage+d10(); if (nChance<30) { SendMessageToPC(oPC,"You fail to mine anything"); return; } int nRandom=Random(8)+1; string sGem; switch (nRandom) { case 1: sGem = "nw_it_gem014";break; // adventurine 20 case 2: sGem = "nw_it_gem002";break; // fire agate 10 case 3: sGem = "nw_it_gem001";break; // greenstone 7 case 4: sGem = "nw_it_gem007";break; // malachite 8 case 5: sGem = "nw_it_gem004";break; // phenelope 20 case 6: sGem = "nw_it_gem001";break; // greenstone 7 case 7: sGem = "nw_it_gem001";break; // greenstone 7 case 8: sGem = "nw_it_gem007";break; // malachite 8 } object oGem=CreateObject(OBJECT_TYPE_ITEM,sGem,GetLocation(OBJECT_SELF),TRUE); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL),oGem); FloatingTextStringOnCreature("Mined a gem",oPC); }