From: <ave...@us...> - 2009-05-29 16:16:53
|
Revision: 6182 http://gemrb.svn.sourceforge.net/gemrb/?rev=6182&view=rev Author: avenger_teambg Date: 2009-05-29 16:16:50 +0000 (Fri, 29 May 2009) Log Message: ----------- added skill check to remove traps Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/ActorBlock.cpp Modified: gemrb/trunk/gemrb/plugins/Core/ActorBlock.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/ActorBlock.cpp 2009-05-29 16:15:57 UTC (rev 6181) +++ gemrb/trunk/gemrb/plugins/Core/ActorBlock.cpp 2009-05-29 16:16:50 UTC (rev 6182) @@ -1509,24 +1509,22 @@ void Highlightable::TryDisarm(Actor *actor) { -//first lets do this automatically succeeding -//TODO: skill check, set off - if (Trapped) { - LastTrigger = actor->GetID(); + if (!Trapped || !TrapDetected) return; + + LastTrigger = actor->GetID(); + int skill = actor->GetStat(IE_TRAPS); + + if (skill/2+core->Roll(1,skill/2,0)>TrapRemovalDiff) { LastDisarmed = actor->GetID(); - SetTrapDetected(1); - //trap fired - if (!TrapResets()) { - //trap removed - Trapped = 0; - core->DisplayConstantStringName(STR_DISARM_DONE, 0xd7d7be, actor); - actor->AddExperience(XP_DISARM, actor->GetXPLevel(1)); - } else { - core->DisplayConstantStringName(STR_DISARM_FAIL, 0xd7d7be, actor); - } - ImmediateEvent(); - return; + //trap removed + Trapped = 0; + core->DisplayConstantStringName(STR_DISARM_DONE, 0xd7d7be, actor); + actor->AddExperience(XP_DISARM, actor->GetXPLevel(1)); + } else { + core->DisplayConstantStringName(STR_DISARM_FAIL, 0xd7d7be, actor); + TriggerTrap(skill, LastTrigger); } + ImmediateEvent(); } void Door::TryPickLock(Actor *actor) @@ -1620,10 +1618,8 @@ } return CT_GO_CLOSER; } - if(actor->IsSelected() ) - { - if(core->GetGame()->EveryoneNearPoint(actor->GetCurrentArea(), actor->Pos, ENP_CANMOVE|ENP_ONLYSELECT) ) - { + if(actor->IsSelected() ) { + if(core->GetGame()->EveryoneNearPoint(actor->GetCurrentArea(), actor->Pos, ENP_CANMOVE|ENP_ONLYSELECT) ) { return CT_MOVE_SELECTED; } return CT_SELECTED; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |