From: <hei...@us...> - 2008-08-18 13:06:00
|
Revision: 2080 http://planeshift.svn.sourceforge.net/planeshift/?rev=2080&view=rev Author: heinchen Date: 2008-08-18 13:06:09 +0000 (Mon, 18 Aug 2008) Log Message: ----------- added more error messages Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2008-08-18 12:52:15 UTC (rev 2079) +++ trunk/src/server/combatmanager.cpp 2008-08-18 13:06:09 UTC (rev 2080) @@ -770,7 +770,7 @@ // If the slot next attack time is not yet up, abort (another event sequence should have been started) if (attacker_data->GetSlotNextAttackTime(event->GetWeaponSlot()) > csGetTicks()) { - psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have no longer an item to attack equipped."); + psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have attacked several times."); return; } @@ -789,6 +789,7 @@ if (event->WeaponID != weapon->GetUID()) { Debug2(LOG_COMBAT, gemAttacker->GetClientID(),"%s has changed weapons mid battle", gemAttacker->GetName() ); + psserver->SendSystemError(event->AttackerCID, "Weapon changed. Skipping"); skipThisRound = true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ven...@us...> - 2008-12-23 05:57:48
|
Revision: 2746 http://planeshift.svn.sourceforge.net/planeshift/?rev=2746&view=rev Author: Vengeance2001 Date: 2008-12-23 05:57:44 +0000 (Tue, 23 Dec 2008) Log Message: ----------- Patch for FS #2523, submitted by Tristan Cragnolini. Thanks Tristan! Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2008-12-23 05:56:55 UTC (rev 2745) +++ trunk/src/server/combatmanager.cpp 2008-12-23 05:57:44 UTC (rev 2746) @@ -580,7 +580,7 @@ // If the target wasn't in combat, it is now... // Note that other modes shouldn't be interrupted automatically - if (gemTarget->GetMode() == PSCHARACTER_MODE_PEACE) + if (gemTarget->GetMode() == PSCHARACTER_MODE_PEACE || || gemTarget->GetMode() == PSCHARACTER_MODE_WORK)) { if (gemTarget->GetClient()) // Set reciprocal target gemTarget->GetClient()->SetTargetObject(gemAttacker,true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ko...@us...> - 2009-04-05 22:28:16
|
Revision: 3398 http://planeshift.svn.sourceforge.net/planeshift/?rev=3398&view=rev Author: kougaro Date: 2009-04-05 22:28:09 +0000 (Sun, 05 Apr 2009) Log Message: ----------- Make sure the server does not crash when no pvp regions are defined - Patch by Lanarel Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2009-04-05 18:46:56 UTC (rev 3397) +++ trunk/src/server/combatmanager.cpp 2009-04-05 22:28:09 UTC (rev 3398) @@ -209,7 +209,7 @@ bool CombatManager::InPVPRegion(csVector3& pos,iSector * sector) { - if (pvp_region->CheckWithinBounds(EntityManager::GetSingleton().GetEngine(), pos, sector)) + if (pvp_region && pvp_region->CheckWithinBounds(EntityManager::GetSingleton().GetEngine(), pos, sector)) return true; return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-24 15:23:15
|
Revision: 3772 http://planeshift.svn.sourceforge.net/planeshift/?rev=3772&view=rev Author: weltall2 Date: 2009-05-24 15:23:12 +0000 (Sun, 24 May 2009) Log Message: ----------- and also the staminacombat script should get it... Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2009-05-24 15:10:10 UTC (rev 3771) +++ trunk/src/server/combatmanager.cpp 2009-05-24 15:23:12 UTC (rev 3772) @@ -749,7 +749,7 @@ { // Input the stamina data MathEnvironment env; - env.Define("Actor", gemAttacker->GetCharacterData()); + env.Define("Actor", gemAttacker); env.Define("Weapon", weapon); staminacombat->Evaluate(&env); MathVar *PhyDrain = env.Lookup("PhyDrain"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2009-05-25 20:33:18
|
Revision: 3780 http://planeshift.svn.sourceforge.net/planeshift/?rev=3780&view=rev Author: weltall2 Date: 2009-05-25 20:33:06 +0000 (Mon, 25 May 2009) Log Message: ----------- it seems gemactor is calling pscharacter when searching for variable names Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2009-05-25 17:11:07 UTC (rev 3779) +++ trunk/src/server/combatmanager.cpp 2009-05-25 20:33:06 UTC (rev 3780) @@ -448,10 +448,8 @@ event->AttackLocation = (INVENTORY_SLOT_NUMBER) targetLocations[randomgen->Get((int) targetLocations.GetSize())]; MathEnvironment env; - env.Define("Attacker", event->GetAttackerData()); - env.Define("Target", event->GetTargetData()); - env.Define("AttackerActor", event->GetAttacker()); - env.Define("TargetActor", event->GetTarget()); + env.Define("Attacker", event->GetAttacker()); + env.Define("Target", event->GetTarget()); env.Define("AttackWeapon", event->GetAttackerData()->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot())); env.Define("AttackWeaponSecondary", subWeapon); // FIXME: The original code defined and redefined TargetAttackWeapon, which can't be right. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ken...@us...> - 2009-12-22 03:46:07
|
Revision: 5020 http://planeshift.svn.sourceforge.net/planeshift/?rev=5020&view=rev Author: kennygraunke Date: 2009-12-22 03:46:00 +0000 (Tue, 22 Dec 2009) Log Message: ----------- ifdef out some annoying combat debugging messages. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2009-12-21 23:45:22 UTC (rev 5019) +++ trunk/src/server/combatmanager.cpp 2009-12-22 03:46:00 UTC (rev 5020) @@ -43,6 +43,8 @@ /// This #define determines how far away people will get detailed combat events. #define MAX_COMBAT_EVENT_RANGE 30 +// #define COMBAT_DEBUG + /** * When a player or NPC attacks someone, the first combat is queued. When * that event is processed, if appropriate at the end, the next combat event @@ -284,7 +286,9 @@ { Debug3(LOG_COMBAT,attacker->GetClientID(),"%s tried attacking with %s but can't use it.", attacker->GetName(),weapon->GetName()); +#ifdef COMBAT_DEBUG psserver->SendSystemError(attacker_character->GetActor()->GetClientID(), response); +#endif } } } @@ -691,7 +695,9 @@ if (!event->GetAttacker() || !event->GetTarget()) // disconnected and deleted { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Combat stopped as one participant logged of."); +#endif return; } @@ -704,28 +710,36 @@ // If the attacker is no longer in attack mode abort. if (gemAttacker->GetMode() != PSCHARACTER_MODE_COMBAT) { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Combat stopped as you left combat mode."); +#endif return; } // If target is dead, abort. if (!gemTarget->IsAlive() ) { +#ifdef COMBAT_DEBUG psserver->SendSystemResult(event->AttackerCID, "Combat stopped as one participant logged of."); +#endif return; } // If the slot is no longer attackable, abort if (!attacker_data->Inventory().CanItemAttack(event->GetWeaponSlot())) { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have no longer an attackable item equipped."); +#endif return; } if (attacker_data->Inventory().GetEquipmentObject(event->GetWeaponSlot()).eventId != event->id) { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Ignored combat event as newer is in."); +#endif return; } @@ -744,7 +758,9 @@ if (event->WeaponID != weapon->GetUID()) { Debug2(LOG_COMBAT, gemAttacker->GetClientID(),"%s has changed weapons mid battle", gemAttacker->GetName() ); +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Weapon changed. Skipping"); +#endif skipThisRound = true; } @@ -777,7 +793,9 @@ // If the target has changed, abort (assume another combat event has started since we are still in attack mode) if (gemTarget != attacker_client->GetTargetObject()) { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Target changed."); +#endif return; } } @@ -787,7 +805,9 @@ gemNPC* npcAttacker = dynamic_cast<gemNPC*>(gemAttacker); if (npcAttacker && npcAttacker->GetTarget() != gemTarget) { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "NPC's target changed."); +#endif return; } } @@ -889,7 +909,9 @@ } else { +#ifdef COMBAT_DEBUG psserver->SendSystemError(event->AttackerCID, "Item %s is not a auto attack item.",attacker_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot())->GetName()); +#endif } // else // CPrintf(CON_DEBUG, "Slot %d for %s not an auto-attack slot.\n",event->GetWeaponSlot(), event->attacker->GetName() ); @@ -1057,21 +1079,6 @@ psCombatGameEvent::~psCombatGameEvent() { -// if (!valid) -// return; - -/*** - if ( target && target->IsValid() ) - { - target->Unregister(this); - target = NULL; - } - if ( attacker && attacker->IsValid() ) - { - attacker->Unregister(this); - target = NULL; - } - ***/ } bool psCombatGameEvent::CheckTrigger() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-08-18 14:03:45
|
Revision: 6165 http://planeshift.svn.sourceforge.net/planeshift/?rev=6165&view=rev Author: rlydontknow Date: 2010-08-18 14:03:39 +0000 (Wed, 18 Aug 2010) Log Message: ----------- added explicit handling of sector -1 fixes "You're too far away" for rats in tutorial Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2010-08-18 13:48:50 UTC (rev 6164) +++ trunk/src/server/combatmanager.cpp 2010-08-18 14:03:39 UTC (rev 6165) @@ -477,7 +477,8 @@ attacker->GetPosition(attackPos, attackSector); target->GetPosition(targetPos, targetSector); - if((attacker->GetInstance() != target->GetInstance()) || + if((attacker->GetInstance() != target->GetInstance() && + attacker->GetInstance() != -1 && target->GetInstance() != -1) || !(entityManager->GetWorld()->WarpSpace(targetSector, attackSector, targetPos))) { return ATTACK_OUTOFRANGE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-08-18 14:08:25
|
Revision: 6166 http://planeshift.svn.sourceforge.net/planeshift/?rev=6166&view=rev Author: rlydontknow Date: 2010-08-18 14:08:19 +0000 (Wed, 18 Aug 2010) Log Message: ----------- use INSTANCE_ALL instead of -1 Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2010-08-18 14:03:39 UTC (rev 6165) +++ trunk/src/server/combatmanager.cpp 2010-08-18 14:08:19 UTC (rev 6166) @@ -478,7 +478,7 @@ target->GetPosition(targetPos, targetSector); if((attacker->GetInstance() != target->GetInstance() && - attacker->GetInstance() != -1 && target->GetInstance() != -1) || + attacker->GetInstance() != INSTANCE_ALL && target->GetInstance() != INSTANCE_ALL) || !(entityManager->GetWorld()->WarpSpace(targetSector, attackSector, targetPos))) { return ATTACK_OUTOFRANGE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-09-27 15:00:43
|
Revision: 6227 http://planeshift.svn.sourceforge.net/planeshift/?rev=6227&view=rev Author: rlydontknow Date: 2010-09-27 15:00:32 +0000 (Mon, 27 Sep 2010) Log Message: ----------- made reading result of calculate damage order-independent (i.e. you may first validate blocking, then dodging now without crashin) Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2010-09-27 14:58:24 UTC (rev 6226) +++ trunk/src/server/combatmanager.cpp 2010-09-27 15:00:32 UTC (rev 6227) @@ -514,19 +514,15 @@ MathVar *blocked = env.Lookup("Blocked"); // Blocked = Attack blocked by enemy MathVar *damage = env.Lookup("FinalDamage"); // Actual damage done, if any - if (badrange->GetValue() < 0.0) + if (badrange && badrange->GetValue() < 0.0) return ATTACK_OUTOFRANGE; - - if (badangle->GetValue() < 0.0) + else if (badangle && badangle->GetValue() < 0.0) return ATTACK_BADANGLE; - - if (missed->GetValue() < 0.0) + else if (missed && missed->GetValue() < 0.0) return ATTACK_MISSED; - - if (dodged->GetValue() < 0.0) + else if (dodged && dodged->GetValue() < 0.0) return ATTACK_DODGED; - - if (blocked->GetValue() < 0.0) + else if (blocked && blocked->GetValue() < 0.0) return ATTACK_BLOCKED; event->FinalDamage = damage->GetValue(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rly...@us...> - 2010-10-13 16:24:38
|
Revision: 6287 http://planeshift.svn.sourceforge.net/planeshift/?rev=6287&view=rev Author: rlydontknow Date: 2010-10-13 16:24:32 +0000 (Wed, 13 Oct 2010) Log Message: ----------- only invoke Calculate Decay if the target was hit (either doing damage or being blocked) fixes warning about missing variable in the script on ATTACK_OUTOFAMMO and ATTACK_NOTCALCULATED Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2010-10-13 16:23:07 UTC (rev 6286) +++ trunk/src/server/combatmanager.cpp 2010-10-13 16:24:32 UTC (rev 6287) @@ -501,7 +501,7 @@ calc_damage->Evaluate(&env); - if (DoLogDebug2(LOG_COMBAT, event->GetAttackerData()->GetPID().Unbox())) + if (DoLogDebug2(LOG_COMBAT, event->GetAttackerData()->GetPID().Unbox())) { CPrintf(CON_DEBUG, "Variables for Calculate Damage:\n"); env.DumpAllVars(); @@ -534,37 +534,41 @@ void CombatManager::ApplyCombatEvent(psCombatGameEvent *event, int attack_result) { - psCharacter *attacker_data,*target_data; + psCharacter *attacker_data = event->GetAttackerData(); + psCharacter *target_data=event->GetTargetData(); - attacker_data=event->GetAttackerData(); - target_data=event->GetTargetData(); + MathVar *weaponDecay = NULL; + MathVar *blockDecay = NULL; + MathVar *armorDecay = NULL; psItem *weapon = attacker_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot()); psItem *blockingWeapon = target_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot(),true); psItem *struckArmor = target_data->Inventory().GetEffectiveArmorInSlot(event->AttackLocation); - // if no armor, then ArmorVsWeapon = 1 - float ArmorVsWeapon = 1; - if (struckArmor) - ArmorVsWeapon = weapon->GetArmorVSWeaponResistance(struckArmor->GetBaseStats()); + // there may only be a decay if you actually hit your target by some means + if(attack_result == ATTACK_DAMAGE || attack_result == ATTACK_BLOCKED) + { + // we are guaranteed some armor is present - real one, race one or base one + CS_ASSERT(struckArmor); + float ArmorVsWeapon = weapon->GetArmorVSWeaponResistance(struckArmor->GetBaseStats()); - // clamp values due to bad data - ArmorVsWeapon = ArmorVsWeapon > 1.0F ? 1.0F : ArmorVsWeapon; - ArmorVsWeapon = ArmorVsWeapon < 0.0F ? 0.0F : ArmorVsWeapon; + // clamp value between 0 and 1 + ArmorVsWeapon = ArmorVsWeapon > 1.0F ? 1.0F : ArmorVsWeapon < 0.0F ? 0.0F : ArmorVsWeapon; - MathEnvironment env; - env.Define("Weapon", weapon); // weapon that was used to attack - env.Define("BlockingWeapon", blockingWeapon); // weapon that blocked the attack - env.Define("Armor", struckArmor); // armor hit - env.Define("ArmorVsWeapon", ArmorVsWeapon); // armor vs weapon effectiveness - env.Define("Damage", event->FinalDamage); // actual damage dealt - env.Define("Blocked", (attack_result == ATTACK_BLOCKED)); // identifies whether this attack was blocked + MathEnvironment env; + env.Define("Weapon", weapon); // weapon that was used to attack + env.Define("BlockingWeapon", blockingWeapon); // weapon that blocked the attack + env.Define("Armor", struckArmor); // armor hit + env.Define("ArmorVsWeapon", ArmorVsWeapon); // armor vs weapon effectiveness + env.Define("Damage", event->FinalDamage); // actual damage dealt + env.Define("Blocked", (attack_result == ATTACK_BLOCKED)); // identifies whether this attack was blocked - calc_decay->Evaluate(&env); + calc_decay->Evaluate(&env); - MathVar *weaponDecay = env.Lookup("WeaponDecay"); - MathVar *blockDecay = env.Lookup("BlockingDecay"); - MathVar *armorDecay = env.Lookup("ArmorDecay"); + weaponDecay = env.Lookup("WeaponDecay"); + blockDecay = env.Lookup("BlockingDecay"); + armorDecay = env.Lookup("ArmorDecay"); + } gemActor *gemAttacker = dynamic_cast<gemActor*> ((gemObject *) event->attacker); gemActor *gemTarget = dynamic_cast<gemActor*> ((gemObject *) event->target); @@ -610,7 +614,7 @@ } } } - + // If the target wasn't in combat, it is now... // Note that other modes shouldn't be interrupted automatically if (gemTarget->GetMode() == PSCHARACTER_MODE_PEACE || gemTarget->GetMode() == PSCHARACTER_MODE_WORK) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2010-10-27 20:14:45
|
Revision: 6321 http://planeshift.svn.sourceforge.net/planeshift/?rev=6321&view=rev Author: weltall2 Date: 2010-10-27 20:14:38 +0000 (Wed, 27 Oct 2010) Log Message: ----------- if the mathenviroment get destroyed because it goes out of scope it's mathvars get destroyed too it seems. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2010-10-27 19:13:55 UTC (rev 6320) +++ trunk/src/server/combatmanager.cpp 2010-10-27 20:14:38 UTC (rev 6321) @@ -540,6 +540,7 @@ MathVar *weaponDecay = NULL; MathVar *blockDecay = NULL; MathVar *armorDecay = NULL; + MathEnvironment env; psItem *weapon = attacker_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot()); psItem *blockingWeapon = target_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot(),true); @@ -555,7 +556,6 @@ // clamp value between 0 and 1 ArmorVsWeapon = ArmorVsWeapon > 1.0F ? 1.0F : ArmorVsWeapon < 0.0F ? 0.0F : ArmorVsWeapon; - MathEnvironment env; env.Define("Weapon", weapon); // weapon that was used to attack env.Define("BlockingWeapon", blockingWeapon); // weapon that blocked the attack env.Define("Armor", struckArmor); // armor hit This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-01-31 14:49:08
|
Revision: 6845 http://planeshift.svn.sourceforge.net/planeshift/?rev=6845&view=rev Author: weltall2 Date: 2011-01-31 14:49:02 +0000 (Mon, 31 Jan 2011) Log Message: ----------- removed duplicate event which even triggered in the wrong cases Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2011-01-30 22:15:26 UTC (rev 6844) +++ trunk/src/server/combatmanager.cpp 2011-01-31 14:49:02 UTC (rev 6845) @@ -863,12 +863,6 @@ if (!skipThisRound) { - // If we didn't attack last time target might have forgotten about us by now - // so we should remind him. - if(event->PreviousAttackResult == ATTACK_OUTOFRANGE || - event->PreviousAttackResult == ATTACK_BADANGLE) - NotifyTarget(gemAttacker,gemTarget); - if (weapon->GetIsRangeWeapon() && weapon->GetUsesAmmo()) { INVENTORY_SLOT_NUMBER otherHand = event->GetWeaponSlot() == PSCHARACTER_SLOT_RIGHTHAND ? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-04-19 17:15:44
|
Revision: 7159 http://planeshift.svn.sourceforge.net/planeshift/?rev=7159&view=rev Author: weltall2 Date: 2011-04-19 17:15:38 +0000 (Tue, 19 Apr 2011) Log Message: ----------- fixed compilation warnings on the previous patch. patch by triglav Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2011-04-19 15:53:43 UTC (rev 7158) +++ trunk/src/server/combatmanager.cpp 2011-04-19 17:15:38 UTC (rev 7159) @@ -243,14 +243,12 @@ const Stance & CombatManager::GetLoweredActorStance(CacheManager* cachemanager, gemActor* attacker) { - Stance currentStance; + Stance currentStance = attacker->GetCombatStance(); - currentStance = attacker->GetCombatStance(); - if(currentStance.stance_id == (cachemanager->stances.GetSize()-1)) // The lowest possible stance is already choosen { // Propably nothing to do here - return currentStance; + return cachemanager->stances.Get(currentStance.stance_id); } return cachemanager->stances.Get(currentStance.stance_id+1); @@ -259,14 +257,12 @@ const Stance & CombatManager::GetRaisedActorStance(CacheManager* cachemanager, gemActor* attacker) { - Stance currentStance; + Stance currentStance = attacker->GetCombatStance(); - currentStance = attacker->GetCombatStance(); - if(currentStance.stance_id == 1) // The greatest possible stance is already choosen { // Propably nothing to do here - return currentStance; + return cachemanager->stances.Get(currentStance.stance_id); } return cachemanager->stances.Get(currentStance.stance_id-1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wel...@us...> - 2011-09-12 11:49:44
|
Revision: 7641 http://planeshift.svn.sourceforge.net/planeshift/?rev=7641&view=rev Author: weltall2 Date: 2011-09-12 11:49:38 +0000 (Mon, 12 Sep 2011) Log Message: ----------- fixed PS#5181 - Bows take damage when ammo depleted patch by kalaspuffar Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2011-09-10 15:25:42 UTC (rev 7640) +++ trunk/src/server/combatmanager.cpp 2011-09-12 11:49:38 UTC (rev 7641) @@ -703,7 +703,8 @@ { weapon->AddDecay(weaponDecay->GetValue()); } - if (blockingWeapon) + //TODO: for now we disable decaying for bows (see PS#5181) + if (blockingWeapon && !blockingWeapon->GetIsRangeWeapon()) { blockingWeapon->AddDecay(blockDecay->GetValue()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2011-12-18 12:48:18
|
Revision: 7838 http://planeshift.svn.sourceforge.net/planeshift/?rev=7838&view=rev Author: magodra Date: 2011-12-18 12:48:12 +0000 (Sun, 18 Dec 2011) Log Message: ----------- - Fixed scope after if. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2011-12-18 12:38:17 UTC (rev 7837) +++ trunk/src/server/combatmanager.cpp 2011-12-18 12:48:12 UTC (rev 7838) @@ -236,7 +236,10 @@ id = cachemanager->stanceID.Find(cachemanager->getOption("combat:default_stance")->getValue()); if(id == csArrayItemNotFound) + { id = cachemanager->stanceID.Find("normal"); + } + } return cachemanager->stances.Get(id); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ral...@us...> - 2014-02-16 19:52:23
|
Revision: 9268 http://sourceforge.net/p/planeshift/code/9268 Author: ralphcampbell Date: 2014-02-16 19:52:21 +0000 (Sun, 16 Feb 2014) Log Message: ----------- Update target hit points when player is targeted by NPC. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2014-02-16 16:56:01 UTC (rev 9267) +++ trunk/src/server/combatmanager.cpp 2014-02-16 19:52:21 UTC (rev 9268) @@ -677,7 +677,10 @@ if(gemTarget->GetMode() == PSCHARACTER_MODE_PEACE || gemTarget->GetMode() == PSCHARACTER_MODE_WORK) { if(gemTarget->GetClient()) // Set reciprocal target + { gemTarget->GetClient()->SetTargetObject(gemAttacker,true); + gemTarget->SendTargetStatDR(gemTarget->GetClient()); + } // The default stance is 'Fully Defensive'. Stance initialStance = GetStance(cacheManager, "FullyDefensive"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ral...@us...> - 2014-03-03 00:54:22
|
Revision: 9305 http://sourceforge.net/p/planeshift/code/9305 Author: ralphcampbell Date: 2014-03-03 00:54:19 +0000 (Mon, 03 Mar 2014) Log Message: ----------- Avoid NULL pointer crash if GetClient() returns NULL Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2014-03-02 02:55:15 UTC (rev 9304) +++ trunk/src/server/combatmanager.cpp 2014-03-03 00:54:19 UTC (rev 9305) @@ -384,6 +384,8 @@ if(!character->IsNPC()) { Client* client = character->GetActor()->GetClient(); + if(!client) + return; psAttackQueueMessage mesg(client->GetClientNum()); psAttackQueue* attackqueue = client->GetCharacterData()->GetAttackQueue(); csList<csRef< psAttack> > attackList = attackqueue->getAttackList(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ral...@us...> - 2014-03-22 17:43:49
|
Revision: 9348 http://sourceforge.net/p/planeshift/code/9348 Author: ralphcampbell Date: 2014-03-22 17:43:46 +0000 (Sat, 22 Mar 2014) Log Message: ----------- Fix stamina drain after dying by not scheduling a new psCombatAttackGameEvent if the player isn't in combat mode. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2014-03-21 00:30:23 UTC (rev 9347) +++ trunk/src/server/combatmanager.cpp 2014-03-22 17:43:46 UTC (rev 9348) @@ -325,6 +325,11 @@ // deals the damage to the target event->attack->Affect(event); + // If the attacker is no longer in attack mode, don't start another attack. + gemActor* attacker = event->GetAttacker()->GetActorPtr(); + if(attacker && attacker->GetMode() != PSCHARACTER_MODE_COMBAT) + return; + // if it was a special attack, remove it from the queue if(event->attack->IsQueuedInClient()) event->GetAttackerData()->GetAttackQueue()->PopDelete(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lpa...@us...> - 2014-03-22 18:12:27
|
Revision: 9349 http://sourceforge.net/p/planeshift/code/9349 Author: lpancallo Date: 2014-03-22 18:12:24 +0000 (Sat, 22 Mar 2014) Log Message: ----------- Test to fix the "combat after death" bug. Clearing attacks and setting PEACE mode. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2014-03-22 17:43:46 UTC (rev 9348) +++ trunk/src/server/combatmanager.cpp 2014-03-22 18:12:24 UTC (rev 9349) @@ -362,6 +362,13 @@ death.deadActor->GetClient()->ClearAllDuelClients(); } + // Clear the queue of attacks + psAttackQueue* attackqueue = client->GetCharacterData()->GetAttackQueue(); + attackqueue->Purge(); + + // set out of combat mode for char + death.deadActor->SetMode(PSCHARACTER_MODE_PEACE); + // Stop actor moving. death.deadActor->StopMoving(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lpa...@us...> - 2014-03-22 19:10:02
|
Revision: 9351 http://sourceforge.net/p/planeshift/code/9351 Author: lpancallo Date: 2014-03-22 19:09:58 +0000 (Sat, 22 Mar 2014) Log Message: ----------- client seems to be null, so using death instead Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2014-03-22 18:48:02 UTC (rev 9350) +++ trunk/src/server/combatmanager.cpp 2014-03-22 19:09:58 UTC (rev 9351) @@ -363,7 +363,7 @@ } // Clear the queue of attacks - psAttackQueue* attackqueue = client->GetCharacterData()->GetAttackQueue(); + psAttackQueue* attackqueue = death.deadActor->GetCharacterData()->GetAttackQueue(); attackqueue->Purge(); // set out of combat mode for char This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ral...@us...> - 2014-04-21 17:38:47
|
Revision: 9467 http://sourceforge.net/p/planeshift/code/9467 Author: ralphcampbell Date: 2014-04-21 17:38:44 +0000 (Mon, 21 Apr 2014) Log Message: ----------- Don't list default attack in /attacklist and fix NULL pointer bug. Modified Paths: -------------- trunk/src/server/combatmanager.cpp Modified: trunk/src/server/combatmanager.cpp =================================================================== --- trunk/src/server/combatmanager.cpp 2014-04-20 23:01:17 UTC (rev 9466) +++ trunk/src/server/combatmanager.cpp 2014-04-21 17:38:44 UTC (rev 9467) @@ -381,11 +381,15 @@ for(size_t i = 0; i < attacks.GetSize(); i++) { + if(attacks[i]->GetID() == 1) + continue; if(attacks[i]->CanAttack(client)) { csString aName = attacks[i]->GetName(); csString aDesc = attacks[i]->GetDescription(); - csString aType = attacks[i]->GetType()->name; + csString aType; + if(attacks[i]->GetType()) + aType = attacks[i]->GetType()->name; csString aimage = attacks[i]->GetImage(); mesg.AddAttack(aName,aDesc,aType,aimage); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |