From: Laszlo T. <ave...@us...> - 2005-11-12 14:05:28
|
Update of /cvsroot/gemrb/gemrb/gemrb/plugins/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18090/Core Modified Files: Actions.cpp Actor.cpp ActorBlock.cpp GSUtils.cpp Log Message: fixed ForceAttack action setting LastAttacker ClearActions will clear WaitCounter/playDeadCounter Dialogue will clear the action queue of both sides Index: GSUtils.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/GSUtils.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** GSUtils.cpp 11 Nov 2005 22:33:14 -0000 1.25 --- GSUtils.cpp 12 Nov 2005 14:05:16 -0000 1.26 *************** *** 724,728 **** } - //we also need to freeze active scripts during a dialog! if (speaker!=target) { if (swap) { --- 724,727 ---- *************** *** 731,738 **** speaker = tmp; } else { ! if (Flags & BD_INTERRUPT) { ! scr->ClearActions(); ! } else { ! if (scr->GetNextAction()) { core->DisplayConstantString(STR_TARGETBUSY,0xff0000); goto end_of_quest; --- 730,735 ---- speaker = tmp; } else { ! if (!(Flags & BD_INTERRUPT)) { ! if (tar->GetNextAction()) { core->DisplayConstantString(STR_TARGETBUSY,0xff0000); goto end_of_quest; *************** *** 743,746 **** --- 740,746 ---- } + scr->ClearActions(); + if (scr!=tar) + tar->ClearActions(); speaker->SetOrientation(GetOrient( target->Pos, speaker->Pos), true); target->SetOrientation(GetOrient( speaker->Pos, target->Pos), true); *************** *** 811,814 **** --- 811,815 ---- } if ( Distance(Sender, target) > wrange ) { + printf("GoNearAndRetry\n"); GoNearAndRetry(Sender, target, true); if (flags&AC_REEVALUATE) { *************** *** 817,826 **** return; } ! //TODO: ! //send Attack trigger to attacked ! //calculate attack/damage actor->SetTarget( target ); - //actor->SetStance( IE_ANI_ATTACK ); - //actor->SetWait( 1 ); //attackreevaluate if ( (flags&AC_REEVALUATE) && parameters->int0Parameter) { --- 818,824 ---- return; } ! printf("Debugdump of target:\n"); ! ((Actor *) target)->DebugDump(); actor->SetTarget( target ); //attackreevaluate if ( (flags&AC_REEVALUATE) && parameters->int0Parameter) { *************** *** 1144,1148 **** void GoNearAndRetry(Scriptable *Sender, Point &p) { ! Sender->AddActionInFront( Sender->CurrentAction ); char Tmp[256]; sprintf( Tmp, "MoveToPoint([%hd.%hd])", p.x, p.y ); --- 1142,1148 ---- void GoNearAndRetry(Scriptable *Sender, Point &p) { ! if (Sender->CurrentAction) { ! Sender->AddActionInFront( Sender->CurrentAction ); ! } char Tmp[256]; sprintf( Tmp, "MoveToPoint([%hd.%hd])", p.x, p.y ); Index: ActorBlock.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/ActorBlock.cpp,v retrieving revision 1.111 retrieving revision 1.112 diff -C2 -d -r1.111 -r1.112 *** ActorBlock.cpp 6 Nov 2005 14:03:09 -0000 1.111 --- ActorBlock.cpp 12 Nov 2005 14:05:16 -0000 1.112 *************** *** 202,205 **** --- 202,207 ---- } actionQueue.clear(); + WaitCounter = 0; + playDeadCounter = 0; // i'm not sure about this } Index: Actions.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Actions.cpp,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** Actions.cpp 10 Nov 2005 21:10:30 -0000 1.37 --- Actions.cpp 12 Nov 2005 14:05:16 -0000 1.38 *************** *** 3508,3521 **** Scriptable* scr = GetActorFromObject( Sender, parameters->objects[1] ); if (!scr || scr->Type != ST_ACTOR) { ! Sender->CurrentAction = NULL; return; } Scriptable* tar = GetActorFromObject( Sender, parameters->objects[2] ); if (!tar || (tar->Type != ST_ACTOR && tar->Type !=ST_DOOR && tar->Type !=ST_CONTAINER) ) { ! Sender->CurrentAction = NULL; return; } ! AttackCore(scr, tar, NULL, 0); ! Sender->CurrentAction = NULL; } --- 3508,3528 ---- Scriptable* scr = GetActorFromObject( Sender, parameters->objects[1] ); if (!scr || scr->Type != ST_ACTOR) { ! //Sender->CurrentAction = NULL; return; } Scriptable* tar = GetActorFromObject( Sender, parameters->objects[2] ); if (!tar || (tar->Type != ST_ACTOR && tar->Type !=ST_DOOR && tar->Type !=ST_CONTAINER) ) { ! //Sender->CurrentAction = NULL; return; } ! GameControl *gc = core->GetGameControl(); ! if (gc) { ! gc->target = (Actor *) tar; ! char Tmp[256]; ! strncpy(Tmp,"NIDSpecial3()",sizeof(Tmp) ); ! scr->AddAction( GenerateAction(Tmp,true) ); ! } ! //AttackCore(scr, tar, NULL, 0); ! //Sender->CurrentAction = NULL; } Index: Actor.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/Actor.cpp,v retrieving revision 1.129 retrieving revision 1.130 diff -C2 -d -r1.129 -r1.130 *** Actor.cpp 11 Nov 2005 22:05:45 -0000 1.129 --- Actor.cpp 12 Nov 2005 14:05:16 -0000 1.130 *************** *** 588,591 **** --- 588,592 ---- core->GetGame()->locals->Lookup("APPEARANCE",tmp); printf( "\nDisguise: %d\n", tmp); + printf( "WaitCounter: %d\n", (int) GetWait()); inventory.dump(); spellbook.dump(); *************** *** 917,921 **** { if (target->Type==ST_ACTOR) { ! LastTarget = ((Actor *) target)->GetID(); } //calculate attack style --- 918,925 ---- { if (target->Type==ST_ACTOR) { ! Actor *tar = (Actor *) target; ! LastTarget = tar->GetID(); ! tar->LastAttacker = GetID(); ! printf("%s got lastattacker as %s\n",tar->GetName(-1), GetName(-1)); } //calculate attack style |