/*/////////////////////// [Include - Debugging] //////////////////////////////// Filename: J_Inc_Debug ///////////////////////// [Include - Debugging] //////////////////////////////// This contains DebugActionSpeak, the debug function. Makes it easier to uncomment debug lines. ///////////////////////// [History] //////////////////////////////////////////// 1.3 - Added - In beta, changed it so this file controls all debug strings. Just uncomment them and recompile to turn it on/off. 1.4 - TO DO: Added some more debug strings I use ///////////////////////// [Workings] /////////////////////////////////////////// DebugActionSpeak normally writes a timestamped log entry, and speak a silent string Server Admins can hear. 1.3 added: - DebugActionSpeakByInt(int iInteger); - Removes many strings into this file - Can easily comment out all string so they are not added to compiled scripts if debugging unused (This saves space on compiled files :-D ) - Always uncomment the right bits if not using any debugging. ///////////////////////// [Arguments] ////////////////////////////////////////// Arguments: N/A ///////////////////////// [Include - Debugging] //////////////////////////////*/ // This will speak a cirtain integer number string (similar to a dialog reference). // - I (Jass) have just moved all strings I used all the time into here, so // if the strings are uncommented, they will not be compiled // - The numbers have no reference to much really. // - Calls DebugActionSpeak! // - See J_INC_DEBUG to uncomment/recomment in void DebugActionSpeakByInt(int iInteger, object oInput = OBJECT_INVALID, int nInput = FALSE, string sInput = ""); // Speaks and stamps a debug string. // - See J_INC_DEBUG to uncomment/recomment the debug strings. // - Only used in special circumstances. void DebugActionSpeak(string sString); // This will speak a cirtain integer number string (similar to a dialog reference). // - I (Jass) have just moved all strings I used all the time into here, so // if the strings are uncommented, they will not be compiled // - The numbers have no reference to much really. // - Calls DebugActionSpeak! // - See J_INC_DEBUG to uncomment/recomment in void DebugActionSpeakByInt(int iInteger, object oInput = OBJECT_INVALID, int nInput = FALSE, string sInput = "") { // TO UNCOMMENT/COMMENT: // - Add/Remove in "//" before the next lines "/*" // - Recompile all files ///* string sDebug; switch(iInteger) { // - Generic AI stuff case 1: sDebug = "[DCR:Melee] Most Damaging Weapon. Target: " + GetName(oInput); break; case 2: sDebug = "[DCR:Melee] Most Damaging as Not Effective"; break; case 3: sDebug = "[DCR:Melee] Melee Code. No valid melee target/Dead. Exiting"; break; case 4: sDebug = "[DCR:Melee] Melee attack. [Target] " + GetName(oInput) + " [Feat/Attack] " + IntToString(nInput); break; case 5: sDebug = "[DCR:Caster] Defensive Casting Mode ON [Enemy] " + GetName(oInput); break; case 6: sDebug = "[DCR:Caster] Moving away from AOO's. [Enemy] " + GetName(oInput); break; case 7: sDebug = "[DCR:Casting] Talent(item) [TalentID] " + IntToString(nInput) + " [Target] " + GetName(oInput) + " [Location] " + sInput; break; case 8: sDebug = "[DCR:Casting] Workaround for Spontaeous [SpellID] " + IntToString(nInput) + " [Target] " + GetName(oInput); break; case 9: sDebug = "[DCR:Casting] NormalSpell [ID] " + IntToString(nInput) + " [Target] " + GetName(oInput) + " [Location] " + sInput; break; case 10: sDebug = "[DCR:Casting] TalentSpell. [ID] " + IntToString(nInput) + " [Target] " + GetName(oInput) + " [Location] " + sInput; break; case 11: sDebug = "[DCR:Casting] SubSpecialSpell. [ID] " + IntToString(nInput) + " [Target] " + GetName(oInput) + " [Location] " + sInput; break; case 12: sDebug = "[DCR:Casting] NormalRandomSpell. [ID] " + IntToString(nInput) + " [Target] " + GetName(oInput) + " [Location] " + sInput; break; case 13: sDebug = "[DCR:Casting] Backup spell caught: " + IntToString(nInput); break; case 14: sDebug = "[DCR:Feat] [ID] " + IntToString(nInput) + " [Enemy] " + GetName(oInput); break; case 15: sDebug = "[DCR:Casting] Grenade [ID] " + IntToString(nInput) + " [Target] " + GetName(oInput) + " [Location] " + sInput; break; case 16: sDebug = "[AOE Call] Moving out of/Dispeling an AOE. [Tag] " + GetTag(oInput); break; case 17: sDebug = "[DCR:Special] Darkness + Caster. No seen enemy. Dispel/Move."; break; case 18: sDebug = "[DRC:Talent] Using Talent (Healing). [TalentID] " + IntToString(nInput) + " [Target] " + GetName(oInput); break; case 19: sDebug = "[DCR:Healing] (Should) Healing [Target]" + GetName(oInput) + " [CurrentHP|Max|ID|Rank|Power] " + IntToString(nInput); break; case 20: sDebug = "[DCR Healing] Boss Action, create Critical Wounds potion"; break; case 21: sDebug = "[DCR:Casting] Healing self with healing kit, [Kit] " + GetName(oInput); break; case 22: sDebug = "[DCR:Feat] Summoning my familiar"; break; case 23: sDebug = "[DCR:Feat] Summoning my animal companion"; break; case 24: sDebug = "[DCR:Fleeing] Stupid/Panic/Flee moving from enemies/position - We are a commoner/no morale/failed < 3 int"; break; case 25: sDebug = "[DCR:Fleeing] Fleeing to allies. [ID Array] " + sInput + " [Ally] " + GetName(oInput); break; case 26: sDebug = "[DCR:GFTK] Attacking a PC who is dying/asleep! [Enemy]" + GetName(oInput); break; case 27: sDebug = "[DCR:Moving] Archer Retreating back from the enemy [Enemy]" + GetName(oInput); break; case 28: sDebug = "[DCR:Turning] Using Turn Undead"; break; case 29: sDebug = "[DCR:Bard Song] Using"; break; case 30: sDebug = "[DCR:Bard Curse Song] Using"; break; case 31: sDebug = "[DCR:All Spells] Error! No casting (No spells, items, target Etc)."; break; case 32: sDebug = "[DCR:All Spells] [Modifier|BaseDC|SRA] " + IntToString(nInput); break; case 33: sDebug = "[DCR:Casting] Cheat Spell. End of Spells. [Spell] " + IntToString(nInput) + "[Target]" + GetName(oInput); break; case 34: sDebug = "[DCR:All Spells] Ranged Spells. Should use closer spells/move nearer"; break; case 35: sDebug = "[DCR:Dragon] Breath weapon & attacking [Breath ID] " + IntToString(nInput) + " [Target] " + GetName(oInput); break; case 36: sDebug = "[DCR:Dragon] Wing Buffet [Target] " + GetName(oInput); break; case 37: sDebug = "[DCR:Beholder] Teleport"; break; case 38: sDebug = "[DCR:Beholder] Rays"; break; case 39: sDebug = "[DCR:Targeting] No valid enemies in sight, moving to allies target's. [Target] " + GetName(oInput); break; case 40: sDebug = "[DCR:Targeting] Override Target Seen. [Name]" + GetName(oInput); break; case 41: sDebug = "[DCR:Targeting] No seen in LOS, Attempting to MOVE to something [Target]" + GetName(oInput); break; case 42: sDebug = "[DCR:Skill] Using agressive skill (+Attack). [Skill] " + IntToString(nInput) + " [Enemy]" + GetName(oInput); break; case 43: sDebug = "[DCR:Pre-Melee Spells] All Potions Using. [Spell ID] " + IntToString(nInput); break; case 44: sDebug = "[DCR:Pre-Melee Spells] True Strike Emptive attack [Target] " + GetName(oInput); break; case 45: sDebug = "[DCR:CounterSpell] Counterspelling. [Target] " + GetName(oInput); break; case 46: sDebug = "[DRC] START [Intruder]" + GetName(oInput); break; case 47: sDebug = "[DCR] [PREMITURE EXIT] Cannot Do Anything."; break; case 48: sDebug = "[DCR] [PREMITURE EXIT] Dazed move away."; break; case 49: sDebug = "[DCR] [PREMITURE EXIT] Fleeing or otherwise"; break; case 50: sDebug = "[DRC] END - DELETE PAST TARGETS"; break; // Perception case 51: sDebug = "[Perception] Our Enemy Target changed areas. Stopping, moving too...and attack... [Percieved] " + GetName(oInput); break; case 52: sDebug = "[Perception] Enemy Vanished (Same area) Retargeting/Searching [Percieved] " + GetName(oInput); break; case 53: sDebug = "[Perception] Enemy seen, and was old enemy/cannot see current. Re-evaluating (no spell) [Percieved] " + GetName(oInput); break; case 54: sDebug = "[Perception] Enemy Seen. Not in combat, attacking. [Percieved] " + GetName(oInput); break; case 55: sDebug = "[Perception] Percieved Dead Friend! Moving and Searching [Percieved] " + GetName(oInput); break; case 56: sDebug = "[Perception] Percieved Alive Fighting Friend! Moving to and attacking. [Percieved] " + GetName(oInput); break; // Conversation case 57: sDebug = "[Shout] Friend (may be PC) in combat. Attacking! [Friend] " + GetName(oInput); break; case 58: sDebug = "[Shout] Responding to shout [Enemy] " + GetName(oInput) + " Who has spoken!"; break; // Phisical Attacked case 59: sDebug = "[Phisically Attacked] Attacking back. [Attacker(enemy)] " + GetName(oInput); break; case 60: sDebug = "[Phisically Attacked] Not same area. [Attacker(enemy)] " + GetName(oInput); break; // Damaged case 61: sDebug = "[Damaged] Morale Penalty for 600 seconds [Penalty]" + IntToString(nInput); break; case 62: sDebug = "[Damaged] Not in combat: DCR [Damager]" + GetName(oInput); break; case 63: sDebug = "[Damaged] Not in combat: DCR. Ally hit us. [Damager(Ally?)]" + GetName(oInput); break; // Death case 64: sDebug = "[Death] Checking corpse status in " + IntToString(nInput) + " [Killer] " + GetName(oInput) + " [Times Died Now] " + sInput; break; // Disturbed case 65: sDebug = "[Disturbed] (pickpocket) Attacking Enemy [Disturber] " + GetName(oInput) + " [Type] " + IntToString(nInput); break; // Rest case 66: sDebug = "[Rested] Resting. [Type(should be invalid)] " + IntToString(nInput); break; // Spell Cast at case 67: sDebug = "[Spell] Caster isn't a creature! May look for target [Caster] " + GetName(oInput); break; case 68: sDebug = "[Spell:Enemy/Hostile] Not in combat. Attacking: [Caster] " + GetName(oInput); break; case 69: sDebug = "[Spell] (ally). Not in combat. May Attack/Move [Caster] " + GetName(oInput); break; // Spell Other AI // - Shouts case 70: sDebug = "[Shout] Reacting To Shout. [ShoutNo.] " + IntToString(nInput) + " [Shouter] " + GetName(oInput); break; // Constants // - Search case 71: sDebug = "[Search] Resting"; break; case 72: sDebug = "[Search] Searching, No one to attack. [Rounds Remaining] " + IntToString(nInput) + ". [Possible target] " + GetName(oInput); break; // - DCR case 73: sDebug = "[Call for DCR] Default AI [Pre-Set Target]" + GetName(oInput); break; case 74: sDebug = "[Call for DCR] Custom AI [" + sInput + "] [Pre-Set Target]" + GetName(oInput); break; // Destroy self case 75: sDebug = "[Dead] Setting to selectable/destroyable (so we go) for Bioware corpses."; break; case 76: sDebug = "[Dead] Destroying self finally."; break; // Waypoints case 77: sDebug = "[Waypoints] Returning to spawn location. [Area] " + GetName(oInput); break; default: return; break; } if(sDebug != "") { DebugActionSpeak(sDebug); } // */ } void DebugActionSpeak(string sString) { // You MUST uncomment this line, IF you use either of the below things string sNew = "[Debug]" + GetName(OBJECT_SELF) + "[ObjectID]" + ObjectToString(OBJECT_SELF) + " [Debug] " + sString; // Note, uncomment this, so that DM's can hear the debug speaks, normally it is // only server admins who can hear the debug. If you are not testing, it might // be best to keep this uncommented. // Futher: - Must have debug mode set to 1 // - Only the server admin can seem to see this. // SpeakString(sNew, TALKVOLUME_TALK); // Note, uncomment this line to send a message to the first PC in the module. // - Useful for singleplayer testing //SendMessageToPC(GetFirstPC(), sNew); // This writes the entry to the log, very important, if debugging // Futher: - If left up for a long time, logs can get very big with the AI // - Use to find problems in the AI and report to me :-D (Jasperre) WriteTimestampedLogEntry(sNew); } // Debug: To compile this script full, uncomment all of the below. /* - Add two "/"'s at the start of this line void main() { return; } //*/