2024-06-14 10:48:20 -04:00
|
|
|
void CreatePlaceable(string sObject, location lPlace, float fDuration)
|
|
|
|
{
|
|
|
|
object oPlaceable = CreateObject(OBJECT_TYPE_PLACEABLE,sObject,lPlace,FALSE);
|
|
|
|
if (fDuration != 0.0)
|
|
|
|
DestroyObject(oPlaceable,fDuration);
|
|
|
|
}
|
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
|
|
|
|
|
|
|
object oPC = GetLastDamager();
|
|
|
|
int iCanDestroy = 0;
|
|
|
|
int iAmTree=0;
|
|
|
|
if (GetLocalInt(OBJECT_SELF,"iAmDeadAlready")!=0) return;
|
|
|
|
SetLocalInt(OBJECT_SELF,"iAmDeadAlready",99);
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_WHEAT")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You gather the remaining straw into a bundle.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("strawbundle",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_BLACKIRIS")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a black iris tuber.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("blackiristuber",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_YELLOWIRIS")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a yellow iris tuber.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("yellowiristuber",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_BLUEIRIS")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a blue iris tuber.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("blueiristuber",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_REDIRIS")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a red iris tuber.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("rediristuber",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_WHITEIRIS")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a white iris tuber.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("whiteiristuber",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_REDTULIP")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a bulb from the red tulip.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("redtulipbulb",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_BLACKTULIP")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a bulb from the black tulip.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("blacktulipbulb",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_WHITETULIP")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a bulb from the white tulip.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("whitetulipbulb",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_YELLOWTULIP")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a bulb from the yellow tulip.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("yellowtulipbulb",oPC,1);
|
|
|
|
}
|
|
|
|
if (GetTag(OBJECT_SELF) == "PLANT_BLUETULIP")
|
|
|
|
{
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,5.0));
|
|
|
|
PlaySound("as_an_crittgnaw3");
|
|
|
|
AssignCommand(oPC,DelayCommand(4.0,FloatingTextStringOnCreature("You also dig up a bulb from the blue tulip.",oPC,FALSE)));
|
|
|
|
CreateItemOnObject("bluetulipbulb",oPC,1);
|
|
|
|
}
|
|
|
|
// This section determines if the plant is a player-planted one (which has a chance not to respawn)
|
|
|
|
// Or a module-designed one placed outside of a plantable field, which will respawn 100% of the time.
|
|
|
|
// As a side-note, the player *can* accidentally be outside the field and kill a player-made plant
|
|
|
|
// that is within the field itself, causing 100% respawn rates at the edges of the fields.
|
|
|
|
// As of this time I have no idea how to address this issue short of placing a local
|
|
|
|
// variable on the plant itself if it is player-planted and checking for this instead.
|
|
|
|
if (GetLocalInt(oPC,"iAmInField") == 99) iCanDestroy = 99;
|
|
|
|
if (GetLocalInt(oPC,"iAmInWaterField") == 99) iCanDestroy = 99;
|
|
|
|
if (GetStringLeft(GetTag(OBJECT_SELF),5)=="TREE_")
|
|
|
|
{
|
|
|
|
iCanDestroy = 0;
|
|
|
|
iAmTree=99;
|
|
|
|
}
|
|
|
|
if (iCanDestroy == 99)
|
|
|
|
{
|
|
|
|
if (d10(1) >5) return;
|
|
|
|
}
|
|
|
|
|
|
|
|
string sSelf = GetResRef(OBJECT_SELF);
|
|
|
|
location lSelf = GetLocation(OBJECT_SELF);
|
|
|
|
object oSelf;
|
|
|
|
if (iAmTree!=0)
|
|
|
|
{
|
|
|
|
oSelf = CreateObject(OBJECT_TYPE_PLACEABLE, "choppedtree",lSelf,FALSE);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
oSelf = CreateObject(OBJECT_TYPE_PLACEABLE, "temporaryplaceho",lSelf,FALSE);
|
|
|
|
}
|
2024-09-01 14:11:15 -04:00
|
|
|
AssignCommand(oSelf,DelayCommand(1800.0,CreatePlaceable(sSelf,lSelf,0.0)));
|
|
|
|
DestroyObject(oSelf,1830.0);
|
2024-06-14 10:48:20 -04:00
|
|
|
|
|
|
|
|
|
|
|
}
|