View previous topic :: View next topic :: Hide signatures |
Author |
Message |
Little Teapot Deity

Joined: 11 Sep 2002 Posts: 2332
Level: 39
|
Posted: Thu Jul 31, 2003 11:36 pm Post subject: Replacement for Tidy Badgers (kinda) |
|
|
I have a small idea... instead of having Tidy badgers clean up all of the trash lying around in Tuskan (and Cobar in general) couldn't we just have the monsters act as janitors and pick up their own damn trash? you could simply have a tidy badger script that executes when there are no players that it can percieve around.
AND using this you wouldn't have to make a cleaner-monster, and it would help make monster's inventory more impressively diverse (or just large) _________________ Matthijs says:
oh ja, ik weet het zonet nog niet
Matthijs says:
het ziet er toch wel een beetje naar uit dat we nederlands praten
Matthijs says:
mischien moet ik dan maar eens vaker nederlands gaan praten
Matthijs says:
kan je me ook meteen niet op al mijn spellinsfouten wijzen
There you have it! indisputable proof Solo's a fascist!!! |
|
Back to top |
|
 |
Little Teapot Deity

Joined: 11 Sep 2002 Posts: 2332
Level: 39
|
Posted: Thu Jul 31, 2003 11:38 pm Post subject: |
|
|
A second thought: if we go with Tidy Badgers, couldn't we have them shunt items into a price-based inventory DB, (which we could then use for quest rewards: "oh, thank you for finding my daughter, please, take my old Glather Sword") and the next time you do said quest they could give you another juicy item from the Tidy Badger mill... _________________ Matthijs says:
oh ja, ik weet het zonet nog niet
Matthijs says:
het ziet er toch wel een beetje naar uit dat we nederlands praten
Matthijs says:
mischien moet ik dan maar eens vaker nederlands gaan praten
Matthijs says:
kan je me ook meteen niet op al mijn spellinsfouten wijzen
There you have it! indisputable proof Solo's a fascist!!! |
|
Back to top |
|
 |
Griff Inn Ice Lolly

Joined: 10 Sep 2002 Posts: 679
Level: 23
|
Posted: Fri Aug 01, 2003 1:19 am Post subject: |
|
|
how about:
Code: |
void main()
{
object oItem = GetModuleItemLost();
object oPC = GetModuleItemLostBy();
if (ActionPutDownItem(oItem))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oPC);
SendMessageToPC(oPC, "Take that you Litterbug!!!");
}
} |
 _________________ Never underestimate the power of hot tea. |
|
Back to top |
|
 |
Little Teapot
Fri 08/01/03 1:49am
|
nono, with mine you could set an item down (like a gold coin) and use it as bait for monsters... like luring ogres and such... |
|
|
 |
Ultrafoo
Fri 08/01/03 2:52am
|
I thought you said he wouldn't react when seeing a player? |
|
|
 |
Little Teapot
Fri 08/01/03 3:04am
|
but rogues have the hide and Move silently skill... and they can set traps.. |
|
|
 |
Ultrafoo
Fri 08/01/03 4:21am
|
*gets excited and likes the idea* |
|
|
 |
Griff Inn Ice Lolly

Joined: 10 Sep 2002 Posts: 679
Level: 23
|
Posted: Fri Aug 01, 2003 1:25 pm Post subject: |
|
|
I put that script up as a joke initially, but then I gave it some second thought. What if, when a player drops an item on the floor for the first time, they get a caution and are asked to put their junk inside the bins provided. [Timeout] Bins have been made and they work exactly the same as Dyso's pools of destruction except they don't use hb scripts and the destroy effect is instant, not delayed.[/Timeout] If they drop another item on the ground, then they get an amount of damage applied to them and are warned again to stop clogging the server with junk. If they drop for a third time, they are killed outright. 2 warnings, and if the the person is so damn well ignorant to them they get punished. _________________ Never underestimate the power of hot tea. |
|
Back to top |
|
 |
Sep Elder

Joined: 22 Apr 2003 Posts: 899
Level: 26
|
Posted: Fri Aug 01, 2003 1:30 pm Post subject: |
|
|
What if a person kills something and loots the corpse, but the weight is too heavy, and they have no choice but to drop the item right there due to encumberence? _________________ "Here comes Halfling death!" |
|
Back to top |
|
 |
Griff Inn
Fri 08/01/03 6:01pm
|
That would count as your first warning wouldn't it? |
|
|
 |
Sep
Fri 08/01/03 6:05pm
|
Yeah, I suppose so, although I think its a load of crap, honestly. |
|
|
 |
Balkur Adept
Joined: 05 Oct 2002 Posts: 86
Level: 8
|
Posted: Fri Aug 01, 2003 6:07 pm Post subject: |
|
|
If i remember correctly GetModuleItemLost() only applies to things dropped on the ground. If you're really fast and put it back in the remains before the corpse disappears this event won't fire. |
|
Back to top |
|
 |
Balkur Adept
Joined: 05 Oct 2002 Posts: 86
Level: 8
|
Posted: Fri Aug 01, 2003 6:09 pm Post subject: |
|
|
Probably better if you just destroy the object and charge a "littering" tax on the litterbug  |
|
Back to top |
|
 |
Griff Inn Ice Lolly

Joined: 10 Sep 2002 Posts: 679
Level: 23
|
Posted: Fri Aug 01, 2003 6:19 pm Post subject: |
|
|
Yeah forgot to put a destroy command in there. Littering tax sounds good too . Sep, at the moment it's just an idea. It's nothing definite. If it ever did get implemented you'd get a lot more warnings and the penalty wouldn't be as harsh. _________________ Never underestimate the power of hot tea. |
|
Back to top |
|
 |
Griff Inn Ice Lolly

Joined: 10 Sep 2002 Posts: 679
Level: 23
|
Posted: Sat Sep 13, 2003 9:51 pm Post subject: |
|
|
Just to keep you all updated on the item dropping issue, if you drop an item on the floor, and no one picks it up after 60 seconds, it is destroyed. Is that fair enough? _________________ Never underestimate the power of hot tea. |
|
Back to top |
|
 |
GorbGuy Guest
Level: 51
|
Posted: Sat Sep 13, 2003 9:55 pm Post subject: |
|
|
Sounds good here. Be nice to not walk into someplace and have 50 piles of remains on the floor from a few hours before.  |
|
Back to top |
|
 |
Norrec Hero

Joined: 20 Mar 2003 Posts: 663
Level: 23
|
Posted: Sun Sep 14, 2003 12:55 am Post subject: |
|
|
Is that if you drop a item say from you inventory? Or if a monster drops it on death? For on monster death I would say maybe make it 3 min, incase someone needs to rearange inventory so it will fit, or drop something so it will fit, or think about if they even want to pick it up. Plus 3 min gives a good solid time for travlers to come and pick it up and use it themselves. _________________ Courage is not the absence of fear, but the presence of fear yet the will to go on. |
|
Back to top |
|
 |
Darkshadow666 Grandmaster

Joined: 31 Jan 2003 Posts: 297
Level: 16
|
Posted: Sun Sep 14, 2003 12:55 am Post subject: |
|
|
I've tested these scripts and they work well. After 30 seconds of a map being "void" of a player character this script runs and cleans the area of dropped treasures and placeables.
For any "Boss" items affix the _Boss to the tag of the item.
AreaCleanup Script
void debug(string dstring)
{
int isdebug = 0;
if (isdebug == 1)
SendMessageToPC(GetFirstPC(), dstring);
}
void TrashObject(object oObject)
{
debug(GetTag(oObject) + " is in trashobject");
if (GetObjectType(oObject) == OBJECT_TYPE_PLACEABLE) {
object oItem = GetFirstItemInInventory(oObject);
while (GetIsObjectValid(oItem))
{
debug(GetTag(oItem) + " is in trashobject");
TrashObject(oItem);
oItem = GetNextItemInInventory(oObject);
}
}
else
debug(GetTag(oObject) + " failed to pass as inventory type placeable is getting destroyed");
AssignCommand(oObject, SetIsDestroyable(TRUE, FALSE, FALSE));
DestroyObject(oObject);
}
void main()
{
object oPC;
oPC = GetFirstPC();
object tPC = oPC;
debug("We're starting area cleanup");
while (oPC != OBJECT_INVALID)
{
if (OBJECT_SELF == GetArea(oPC))
return;
else oPC = GetNextPC();
}
object oObject = GetFirstObjectInArea(OBJECT_SELF);
while (oObject != OBJECT_INVALID)
{
debug(GetTag(oObject));
if (GetIsEncounterCreature(oObject) && FindSubString(GetTag(oObject), "_BOSS") > -1)
DestroyObject(oObject);
int iObjectType = GetObjectType(oObject);
switch (iObjectType) {
case OBJECT_TYPE_PLACEABLE:
if (GetTag(oObject) != "BodyBag") {
break; }
case OBJECT_TYPE_ITEM:
TrashObject(oObject); }
oObject = GetNextObjectInArea(OBJECT_SELF);
}
}
her_onexit script
And put this script in the OnExit of the map!
void main()
{
float cleanupdelay = 30.0; //if you change this it alters how long before
// the area cleans up, if you do change it INCLUDE THE DECIMAL, or it won't
// work
if(!GetIsPC(GetExitingObject()) ) {
return; }
object oPC = GetExitingObject();
if (!GetIsPC(oPC))
return;
oPC = GetFirstPC();
while (oPC != OBJECT_INVALID)
{
if (OBJECT_SELF == GetArea(oPC))
return;
else oPC = GetNextPC();
}
DelayCommand(cleanupdelay, ExecuteScript("areacleanup", OBJECT_SELF));
} |
|
Back to top |
|
 |
|