jezter Posted February 18, 2007 Share Posted February 18, 2007 Like what would be a force choke script, for a dialog sequence. what would it be? Link to comment Share on other sites More sharing options...
stoffe Posted February 18, 2007 Share Posted February 18, 2007 Like what would be a force choke script, for a dialog sequence. what would it be? If the victim should just be "visually" choked and not take any damage, and the conversing player character should do the choking, something like this might work: void main() { object oChoker = GetPCSpeaker(); object oVictim = GetObjectByTag("[color=Yellow]ChokeMe[/color]"); ActionPauseConversation(); AssignCommand(oChoker, SetFacingPoint(GetPosition(oVictim))); AssignCommand(oChoker, DelayCommand(0.5, PlayAnimation(ANIMATION_FIREFORGET_FORCE_CAST))); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oVictim, 6.0)); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_CHOKE), oVictim)); DelayCommand(6.0, ActionResumeConversation()); } Change the text in Yellow to the tag of the NPC that should be choked. Link to comment Share on other sites More sharing options...
jezter Posted February 18, 2007 Author Share Posted February 18, 2007 But how do you make the thing your choking take damage as well? Link to comment Share on other sites More sharing options...
stoffe Posted February 19, 2007 Share Posted February 19, 2007 But how do you make the thing your choking take damage as well? void main() { object oChoker = GetPCSpeaker(); object oVictim = GetObjectByTag("ChokeMe"); ActionPauseConversation(); AssignCommand(oChoker, SetFacingPoint(GetPosition(oVictim))); AssignCommand(oChoker, DelayCommand(0.5, PlayAnimation(ANIMATION_FIREFORGET_FORCE_CAST))); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oVictim, 6.0)); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_CHOKE), oVictim)); DelayCommand(6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oVictim)); DelayCommand(6.0, ActionResumeConversation()); } Link to comment Share on other sites More sharing options...
jezter Posted February 19, 2007 Author Share Posted February 19, 2007 The script got a few errors when I compiled it, which were: Error: Undeclared identifier "ANIMATION FIREFORGET_FORCE_CAST" Error: Required argument missing in call to "PlayAnimation" Error: Required argument missing in call to "DelayCommand" Error: Required argument missing in call to "AssignCommand" Link to comment Share on other sites More sharing options...
stoffe Posted February 19, 2007 Share Posted February 19, 2007 Error: Undeclared identifier "ANIMATION FIREFORGET_FORCE_CAST" Right, that constant probably does not exist in KotOR1. Try this instead: void main() { object oChoker = GetPCSpeaker(); object oVictim = GetObjectByTag("ChokeMe"); ActionPauseConversation(); AssignCommand(oChoker, SetFacingPoint(GetPosition(oVictim))); AssignCommand(oChoker, ClearAllActions()); AssignCommand(oChoker, ActionCastFakeSpellAtObject(FORCE_POWER_CHOKE, oVictim)); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oVictim, 6.0)); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_CHOKE), oVictim)); DelayCommand(6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oVictim)); DelayCommand(6.0, ActionResumeConversation()); } Link to comment Share on other sites More sharing options...
jezter Posted February 19, 2007 Author Share Posted February 19, 2007 Well, I tried it in the game, and apparently my character does the choking animation, but to the right of the selkath person, and the slekath person doesn't choke, and he doesn't lose life either. Link to comment Share on other sites More sharing options...
stoffe Posted February 19, 2007 Share Posted February 19, 2007 Well, I tried it in the game, and apparently my character does the choking animation, but to the right of the selkath person, and the slekath person doesn't choke, and he doesn't lose life either. Did you change the tag in the script to the tag of the NPC who should be choked?Also make sure the victim has a unique tag, or the script might target the wrong NPC if there are others in the same area with an identical tag. If the intended victim is the NPC you are in conversation with you can replace... object oVictim = GetObjectByTag("ChokeMe"); ...with... object oVictim = OBJECT_SELF; ...instead, which will always be the conversation owner. Further, the victim will not take any damage if it is plot-flagged, since that makes it invulnerable. So make sure you aren't trying to choke a plot-flagged NPC. If you want to take the risk of doing it anyway you can remove the plot-flag from the victim by adding this at line 3 of the main() function in the script: SetPlotFlag(oVictim, FALSE); Link to comment Share on other sites More sharing options...
jezter Posted February 19, 2007 Author Share Posted February 19, 2007 It worked like a charm Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.