Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - fireknight40

Pages: 1 2 [3] 4 5 ... 10
61
Doriath Private / Module Updates
« on: May 19, 2005, 10:37:17 PM »
Okay everybody... All depending on my test results tommorrow I should be able to complete the second computer and have the server up 24/7 and by tommorrow I hope to have a working duel manager, possibly a flagging of EDers, and a few other odds and ends that you are welcome to find for yourself. Anywho this is a possiblity not a definate. Well I should be able to confirm or deny some of this tommorrow. Also I may become less active since I might be getting a *shudders* job to try and get some cash and maybe get WoW for the fun of it. :P I think that's about it. Wish me luck. :)

62
NwN General / I need help...
« on: May 19, 2005, 08:56:33 PM »
Okay I used to be able to just browse games now however I can't. I have GodSpire in fav list but things like the Doriath server are theings I can't get to. Please help. The error message it gives me is "Connection failed, try another Nick." That is an exact quote of it. Anyone have any idea what a Nick is? Or how I change them?

63
Guild Wars General / GW Screen Shots
« on: May 19, 2005, 12:21:38 AM »
Quote
Anyone know what the hell this is all about?
Maybe something to do with the Underworld

[attachmentid=263]
[snapback]23588[/snapback]
I think that gives you passage into the "underworld"

64
Doriath Private / Module Updates
« on: May 18, 2005, 10:25:15 PM »
Okay here's something I found pretty interesting. the first pic is of the members rooms the green outlined is occupied rooms and their names. The blue outline means that the room was once occupied but that person has left. I found alot of holes. The second pic is of the High Elf room. Same deal with the outlines.

EDIT: Sorry that they're bitmaps but you can't read the typing otherwise.

[attachment deleted by admin]

65
Doriath Private / Doriath Clan Roster
« on: May 18, 2005, 06:05:30 PM »
Quote
I guess I wasn't there when that old 3 rank thing was on . What's that ?
And about our big decline ... it's better than DE and Marauders .
We're the more active clan in GodSpire . When will nwn 2 be released ? Because hmm in err ... 3-4 month if things go normal , I'll study to become a doctor like guy ( the correct name is osteopathie in french though I dunno the word in english ) . Hence I'll be busy with studying and might not be able to play a lot ( I might not even have a internet connection anymore since I am moving in an other town where the medecine school is located - bordeau if you know - though I'll play when I can if I can afford it ) .
[snapback]23573[/snapback]
Good luck. :)

66
Doriath Private / Doriath Module
« on: May 18, 2005, 05:49:25 PM »
Okay it seems the answer is clear the Doriath module will remain CEP free. :D (whew saved me from alot of work converting) :P

67
Random Ranting / Shoes
« on: May 18, 2005, 09:32:59 AM »
Quote
Of course, havent you ever saved your life by biting holes into your leather shoes?
[snapback]23437[/snapback]
Well... yes, but then they opened the door... j/k anywho no I haven't yet. However I've studied edible plants and found them irl and I'd probably look for some of those before I eat my shoes.

68
Doriath Private / Doriath Module
« on: May 18, 2005, 09:12:34 AM »
Well that's the thing is that not everyone can use the portal anyways because the module requires SoU and HotU.

Quote
Ideas....I hope youy got my Pm about the kings. CEP is cool if you know how to do it.
That quote is from Anheg in the "Module Updates" topic.

69
Doriath Private / Doriath Module
« on: May 17, 2005, 07:28:19 PM »
Okay everybody I was thinking about this today and figured I'd ask everyone in Doriath. I'll start work on a version with CEP just so that everyone can see the difference. Here are the advantages and disadvantages that I see:
Advantages:
More robe
Better looks
More choices

Disadvantages:
Larger module
Conversion to CEP
Big Download for CEP

70
Doriath Private / Doriath Clan Roster
« on: May 17, 2005, 05:52:59 PM »
Quote
I agree with the list, and i also like the idea about the statues. But i dont agree the suggestion i've read about classifying people as inactive just because they dont log in GodSpire.

I think we all realise that people r playing other games (mostly now with the arrive of GW) and this is a transition time until NWN 2 is released. So lets keep close to the clan but be realistic with the current situation.

Greetings.
[snapback]23513[/snapback]
Well what if it was if they posted or logged onto here as well?

71
Doriath Private / I must say...
« on: May 17, 2005, 05:42:20 PM »
Quote
...goodbye
(i was never retorical,so i`ll keep this short)

Miro has fired his last arrow
This is probably the best clan on the NWN online community.Why ever quit it?
Because the title "Lord" title no longer suits my name.I became unactive and for a quite some time didnt even checked LM.Thoose are not the attributes that suit a lord,someone who must be a role modell for other Doriath players.
But the name doriath will be always in my heart beacuse i had one year of the best gameplay and frendship ever.I will never forget you guys!

You rocked,you rock,you will rock.

*disappearsinto the mist*
[snapback]23519[/snapback]
I'm going to miss you... I do hope you still will come by GodSpire and if so I hope to see you sometime.

72
Doriath Private / Doriath Clan Roster
« on: May 17, 2005, 09:25:41 AM »
Quote
only reason hydros joined without ever coming on was because he couldn't come online and he told us. Giving notice is an exception.
[snapback]23505[/snapback]
Well yeah I figured that would be the exception in any system. Guess I forgot to mention it. lol :P

73
Doriath Private / Doriath Clan Roster
« on: May 16, 2005, 11:15:28 PM »
Quote
well creating an inactive rank was the idea, but some have been gone since summer (sully) so removing is in order.
[snapback]23490[/snapback]
I kind of agree with that. I think maybe an inactive rank with maybe a time limit like 3 months or something to at least make an appearance before kicked out. Here's something I think might work:
2 weeks no appearance=inactive
3 months inactive=kickout
3 inactives in 4 months=kick out

However the appearance could be either posting in the forums of appearing in GodSpire or the Doriath server...

EDIT:Sorry double post could you delete the first one please?

74
Doriath Private / Module Updates
« on: May 15, 2005, 03:35:23 PM »
Oaky well the module is back with a few new creatures and just because I can't play NWN I am still allowed to mess around with the toolset. Anyways if you want to see the new creatures you'll need a DM online so that the DM can make themselves a creature rune (under special 2 in items) And creatue the creatures the full creature list for this now is:
Azer-Made by Invizible420 from NWVault
Gnoll Archer-made by me
Greater Lightning Elemental-Made by Invizible420 from NWVault
Hellcat-Made by Invizible420 from NWVault
Ice Dragon-made by me
MechaMinotaur-made by me
Mystic Mechanoid-made by me
Negative Energy-Made by Invizible420 from NWVault
Nyth-Made by Invizible420 from NWVault
Strange Zombie Archer-made by me
Strange Zombie Warrior-made by me
Swift Gnoll-made by me

I might put up some screenshots later anywho here are the URLs for the creatures from NWVault incase you want to see for yourself:
Hellcat- http://nwvault.ign.com/View.php?view=Creatures.Detail&id=455
Nyth- http://nwvault.ign.com/View.php?view=Creatures.Detail&id=452
Azer- http://nwvault.ign.com/View.php?view=Creatures.Detail&id=29
Greater Lightning Elemental- http://nwvault.ign.com/View.php?view=Creatures.Detail&id=176
Negative Energy- http://nwvault.ign.com/View.php?view=Creatures.Detail&id=282

So yeah I don't want to take any credit for those creatures, but I thought they were cool so I put them in.

75
Doriath Private / I may be out for a few days.
« on: May 15, 2005, 03:06:10 AM »
Quote
you'll do great don't worry mate
[snapback]23431[/snapback]
I've failed twice so far. :\ Well my drivers ed thing was a piece of crap pretty much so now I have the DMV book to study from which is extremely useful and I am confident I'll pass it next time I take it...

76
Doriath Private / I may be out for a few days.
« on: May 14, 2005, 07:25:46 PM »
Okay I wanted to bring this one up again because I can't play and PC games until I pass my drivers test. I'm hoping to be back by next Friday.

77
Doriath Private / "Sents" for the Doriath Server
« on: May 11, 2005, 01:46:08 AM »
hrm... I dunno maybe Guardian in elven or something? I'm not sure...

78
Doriath Private / Doriath Clan Roster
« on: May 11, 2005, 01:24:12 AM »
I hope to see you around. :) I dunno if I will, but I will always hope...

79
Doriath Private / Module Updates
« on: May 10, 2005, 01:23:15 AM »
Sorry everybody, but due to some recsent problems I may not be able to put up the module for a few days. I'm sorry for any inconvenience.

P.S. Didn't that just make me sound like an onld man? Creepy! j/k  :P

80
Script Request / I need a little bit of help...
« on: May 10, 2005, 12:59:49 AM »
Quote
You can't have 2 void main() in 1 script. You also only need to declare those once, except the visual effects you are using. The Cd key and stuff is fine once. Just use these "if"
int nStatus = GetCampaignInt(sKey, "dm");
if (nStatus == 5)

You're setting them as 5 I see. So change it for every part.

int nStatus = GetCampaignInt(sKey, "sent");
if (nStatus == 5)

int nStatus1 = GetCampaignInt(sKey, "lord");
if (nStatus1 == 5)

int nStatus2 = GetCampaignInt(sKey, "dm");
if (nStatus2 == 5)

That's just an example to change them to. They all have to be different. Just use certain "if"

Example:

int nStatus = GetCampaignInt(sKey, "dm");
if (nStatus == 5)
{
lights/items
}
int nStatus1 = GetCampaignInt(sKey, "lord");
if (nStatus1 == 5)
{
lights/items
}
int nStatus = GetCampaignInt(sKey, "sent");
if (nStatus == 5)
{
lights/items
}
[snapback]23210[/snapback]

:huh: Okay I didn't really understand all of that is there any simpler explination?

81
Script Request / I need a little bit of help...
« on: May 09, 2005, 08:03:54 PM »
Okay I need help again... Okay here's the deal it won't compile for some reason it says that on line 115 "5/9/2005 5:05:58 PM: Error. 'filter' did not compile.
filter.nss(115): ERROR: UNKNOWN STATE IN COMPILER"
here's the script.
Code: [Select]
void getrid(object oPC, object oItem)
{

   itemproperty property=GetFirstItemProperty(oItem);
   while(GetIsItemPropertyValid(property))
   {
       if (
       (GetItemPropertyType(property) == ITEM_PROPERTY_CAST_SPELL)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_ON_HIT_PROPERTIES)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_REGENERATION)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DAMAGE_VULNERABILITY)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DAMAGE_VULNERABILITY)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_TRAP)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_THIEVES_TOOLS)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_ON_MONSTER_HIT)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_ABILITY_SCORE)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_AC)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_DAMAGE)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_SAVING_THROWS)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFIC)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DECREASED_SKILL_MODIFIER)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_MONSTER_DAMAGE)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_REGENERATION_VAMPIRIC)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_DAMAGE_REDUCTION)
       || (GetItemPropertyType(property) == ITEM_PROPERTY_ONHITCASTSPELL)
       )
       {
            RemoveItemProperty(oItem, property);
       }
       property = GetNextItemProperty(oItem);
   }
   if(GetGoldPieceValue(oItem) > 500000)
   {
       DestroyObject(oItem);
   }
}
//the function that gets the items and uses the filter on them
void filter_items(object oPC)
{
   object oItem = GetFirstItemInInventory(oPC);
   object oSlot;
   //don't scan dm's
   if(GetIsDM(oPC) == TRUE)
   {
       return;
   }
   //scan inventory
   while(GetIsObjectValid(oItem))
   {
       getrid(oPC, oItem);
       oItem = GetNextItemInInventory(oPC);
   }
   //scan equiped items
   oSlot = GetItemInSlot(INVENTORY_SLOT_ARMS,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_ARROWS,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_BELT,oPC);
   getrid(oPC, oSlot);
   oSlot= GetItemInSlot(INVENTORY_SLOT_BOLTS,oPC);
   getrid(oPC, oSlot);
   oSlot= GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC);
   getrid(oPC, oSlot);
   oSlot= GetItemInSlot(INVENTORY_SLOT_BULLETS,oPC);
   getrid(oPC, oSlot);
   oSlot= GetItemInSlot(INVENTORY_SLOT_CARMOUR,oPC);
   getrid(oPC, oSlot);
   oSlot= GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
   getrid(oPC, oSlot);
   oSlot= GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_HEAD,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_NECK,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
   getrid(oPC, oSlot);
   oSlot = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC);
   getrid(oPC, oSlot);
}
void main()
{
   object oPC = GetEnteringObject();
   string sKey = GetPCPublicCDKey(oPC);
   effect eLight = SupernaturalEffect(EffectVisualEffect(VFX_DUR_IOUNSTONE_GREEN));
   filter_items(oPC);
int nStatus = GetCampaignInt(sKey, "sent");
if (nStatus == 5)
{
              DelayCommand(6.0,ApplyEffectToObject(DURATION_TYPE_PERMANENT ,eLight ,oPC));
             CreateItemOnObject("blueprint", oPC);
             CreateItemOnObject("blueprint001", oPC);
             CreateItemOnObject("teleporter", oPC);
}
void main()
{
   object oPC = GetEnteringObject();
   string sKey = GetPCPublicCDKey(oPC);
   effect eLight = SupernaturalEffect(EffectVisualEffect(VFX_DUR_IOUNSTONE_YELLOW));
   filter_items(oPC);
int nStatus = GetCampaignInt(sKey, "lord");
if (nStatus == 5)
{
              DelayCommand(6.0,ApplyEffectToObject(DURATION_TYPE_PERMANENT ,eLight ,oPC));
             CreateItemOnObject("blueprint", oPC);
             CreateItemOnObject("blueprint001", oPC);
             CreateItemOnObject("blueprint003", oPC);
             CreateItemOnObject("blueprint002", oPC);
             CreateItemOnObject("blueprint004", oPC);
             CreateItemOnObject("restartrune", oPC);
             CreateItemOnObject("teleporter", oPC);
}
void main()
{
   object oPC = GetEnteringObject();
   string sKey = GetPCPublicCDKey(oPC);
   effect eLight = SupernaturalEffect(EffectVisualEffect(VFX_DUR_IOUNSTONE_BLUE));
   filter_items(oPC);
int nStatus = GetCampaignInt(sKey, "dm");
if (nStatus == 5)
{
              DelayCommand(6.0,ApplyEffectToObject(DURATION_TYPE_PERMANENT ,eLight ,oPC));
             CreateItemOnObject("blueprint001", oPC);
             CreateItemOnObject("creaturerune", oPC);
             CreateItemOnObject("blueprint003", oPC);
             CreateItemOnObject("blueprint002", oPC);
             CreateItemOnObject("blueprint007", oPC);
             CreateItemOnObject("blueprint004", oPC);
             CreateItemOnObject("blueprint006", oPC);
             CreateItemOnObject("blueprint005", oPC);
             CreateItemOnObject("restartrune", oPC);
             CreateItemOnObject("blueprint", oPC);
             CreateItemOnObject("teleporter", oPC);
}
}

82
Random Ranting / Check it!
« on: May 07, 2005, 11:10:14 PM »
Pure awesomeness.

83
GodSpire General / Crazy screenie!
« on: May 07, 2005, 11:08:04 PM »
Quote
lol what did hell do now :P and that pic has no indecation that she was after hell.
[snapback]23164[/snapback]
He was a monk and was off the screen by the time I took the pic so I just cropped it to her.

BTW: Nice new avatar Celest.

84
GodSpire General / Crazy screenie!
« on: May 07, 2005, 08:04:49 PM »
1) Angelita was chasing HeLL on a horse!
2) A zombie funeral
3) Moving statue

[attachment deleted by admin]

85
Doriath Private / Module Updates
« on: May 05, 2005, 09:17:36 PM »
Okay I got bored and started taking screenies of the module in the toolset...
1) The new guard that patrols the door
2) The complete area listing(some are under construction but there's 30 listed there)

[attachment deleted by admin]

86
Random Ranting / Death Clock
« on: May 02, 2005, 08:28:25 PM »
Wednesday June 6, 2063

74 :P... hrm shouldn't it be off due to free well and such?
I'll mourn for all those that fall before my time... (that I know in game)

87
Script Request / I need a little bit of help...
« on: May 01, 2005, 12:16:18 AM »
I was curious how would I get a spell to just... well... not work? I tried working with the script some but it still worked... :\
(I'm horrible at editing spells)

88
Guild Wars General / Names
« on: April 30, 2005, 07:40:51 PM »
RP NAME: Brior Nailuisen

PVP NAME: Brior The Foresaken

89
Script Request / Help
« on: April 29, 2005, 01:41:00 AM »
Quote
ok thx a lot :clapping:
[snapback]22809[/snapback]
No problem. :)

90
Script Request / Help
« on: April 29, 2005, 01:34:39 AM »
This is the one I used on the Doriath combat dummies. Goes onto OnDamaged
Code: [Select]
int   PLC_DUMMY_HP_MODIFIER = 40;      // dummy-hp = modifier + (pc-level * modifier)
float PLC_DUMMY_XP_MODIFIER = 0.2;     // adjust this to control XP output (xp = dummy-hp * modifier)
float PLC_DUMMY_XP_TIMER    = 3600.0;  // XP timer in seconds. Player won't get XP again until this timer runs out

void DummyRespawn(string sResRef, location lLoc)
{
  CreateObject(OBJECT_TYPE_PLACEABLE, sResRef, lLoc);
}

void DummyCheckSession(object oDummy = OBJECT_SELF)
{
  object oUser = GetLocalObject(oDummy,"PLC_INTERACT_USER");
  if(GetIsObjectValid(oUser))
  {
    if(GetIsInCombat(oUser)) // still in combat, restart timer
      DelayCommand(5.0,DummyCheckSession(oDummy));
    else
    {
      // not in combat, abort session
      FloatingTextStringOnCreature("Session Aborted...",oUser);
      // delete & re-create dummy
      string sResRef = GetResRef(oDummy); location lLoc = GetLocation(oDummy);
      AssignCommand(GetModule(),DelayCommand(0.1,DummyRespawn(sResRef,lLoc)));;
      DestroyObject(oDummy);
    }
  }
}

void DummyMain(object oPC, object oDummy)
{

  // initial user interaction, starts training session
  if( !GetLocalInt(oDummy,"PLC_INTERACT_INUSE") )
  {
    //DelayCommand(5.0,CombatDummyReport(oPC, oDummy));
    // set target PC
    SetLocalObject(oDummy,"PLC_INTERACT_USER",oPC);
    // set InUse flag
    SetLocalInt(oDummy,"PLC_INTERACT_INUSE",TRUE);
    // set strength of dummy based on player level
    SetLocalInt(oDummy,"PLC_INTERACT_SESSIONHP", ((GetLevelByPosition(1,oPC) + GetLevelByPosition(2,oPC) + GetLevelByPosition(3,oPC)) * PLC_DUMMY_HP_MODIFIER ) + PLC_DUMMY_HP_MODIFIER );
    // initiate "check for session abort/cancel"
    // this function polls every 5 sec and checks if the player is still
    // fighting with the dummy. if not, session gets aborted
    // and dummy gets re-created. this deletes all variables and resets
    // everything to clean state.
    // this "pseudo heartbeat" only runs during PC<>dummy interaction
    // and is very small
    DelayCommand(5.0,DummyCheckSession(oDummy));
    FloatingTextStringOnCreature("Session Started - Dummy Strength: "+IntToString(GetLocalInt(oDummy,"PLC_INTERACT_SESSIONHP")),oPC);
    if(GetLocalInt(oPC,"PLC_INTERACT_COMBATDUMMY_NOXP"))
      FloatingTextStringOnCreature("You won't get XP this time",oPC);
  }

  object oUser = GetLocalObject(oDummy,"PLC_INTERACT_USER");
  if(oUser == oPC)
  {
    int nSessionHP = GetLocalInt(oDummy,"PLC_INTERACT_SESSIONHP");
    int nTotalDamage = GetMaxHitPoints() - GetCurrentHitPoints();
    int nHitCount;
    int nLastTotalDamage = GetLocalInt(oDummy,"PLC_INTERACT_LASTHP");
    nHitCount = GetLocalInt(oDummy,"PLC_INTERACT_HITCOUNT");

    // register hit
    if(nTotalDamage > nLastTotalDamage)
    {
      SetLocalInt(oDummy,"PLC_INTERACT_LASTHP", nTotalDamage);
      nHitCount++;
      SetLocalInt(oDummy,"PLC_INTERACT_HITCOUNT", nHitCount);
    }

    // apply some effects based on damage
    int nDamage = nTotalDamage - nLastTotalDamage;
    if (nDamage > 24) ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(75), OBJECT_SELF);
    if (nDamage > 12) ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(281), OBJECT_SELF);
    if (nDamage > 6)  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(112), OBJECT_SELF);
    if (nDamage > 3)  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(236 + d3()), OBJECT_SELF);
    FloatingTextStringOnCreature("Total Damage: " +IntToString(nTotalDamage)+ " Hits: "+IntToString(nHitCount),oPC);

    if(nTotalDamage > nSessionHP) // session done - dummy HP depleted
    {
      FloatingTextStringOnCreature("You have finished your training session",oPC);
      // report final statistic
      AssignCommand(GetModule(),DelayCommand(4.0,FloatingTextStringOnCreature("You inflicted "+IntToString(nTotalDamage)+ " damage to the dummy with "+IntToString(nHitCount)+" hits",oPC)));
      AssignCommand(GetModule(),DelayCommand(6.0,FloatingTextStringOnCreature("Your average damage is " + IntToString(nTotalDamage/nHitCount)+" per attack",oPC)));
      // award xp only if permitted
      if(GetLocalInt(oPC,"PLC_INTERACT_COMBATDUMMY_NOXP"))
        AssignCommand(GetModule(),DelayCommand(8.0,FloatingTextStringOnCreature("No XP reward ! You trained too recently...",oPC)));
      else
      {
        // award xp and report it to the user
        AssignCommand(GetModule(),DelayCommand(8.0,FloatingTextStringOnCreature("You earned " + IntToString( FloatToInt( IntToFloat(nSessionHP) * PLC_DUMMY_XP_MODIFIER ) ) + " xp for your training",oPC)));
        AssignCommand(GetModule(),DelayCommand(9.0,GiveXPToCreature(oPC,FloatToInt( IntToFloat(nSessionHP)* PLC_DUMMY_XP_MODIFIER ) ) ) );
        // set no-xp flag
        SetLocalInt(oPC,"PLC_INTERACT_COMBATDUMMY_NOXP",TRUE);
        // set deletion timer for no-xp flag
        AssignCommand(GetModule(),DelayCommand(PLC_DUMMY_XP_TIMER,DeleteLocalInt(oPC,"PLC_INTERACT_COMBATDUMMY_NOXP")));
      }
      // destroy & re-create dummy
      string sResRef = GetResRef(oDummy); location lLoc = GetLocation(oDummy);
      AssignCommand(GetModule(),DelayCommand(0.1,DummyRespawn(sResRef,lLoc)));;
      DestroyObject(oDummy);
    }
  }
  else
    SendMessageToPC(oPC,"Dummy is currently busy...");
}

void main()
{
  object oLastDamager = GetLastDamager();

  if(GetIsObjectValid(oLastDamager))
  {
    //SendMessageToPC(GetFirstPC(),"Last Damager: "+GetName(oLastDamager));
    DummyMain(oLastDamager,OBJECT_SELF);
  }
}

Pages: 1 2 [3] 4 5 ... 10