Thanks again, Phanjam, I really appreciate your help with all this.
The more I'm pondering this, the more I think missiles might be a good idea after all. Especially since they have bools like COLLIDES_WITH_OBJECTS and COLLIDES_WITH_WORLD, meaning they can noclip through everything, which is the whole idea. Now, if only I could find an entry that disables line of sight checks, like most skills allow you to, that would make it perfect.
I'll think about it some more later.
One thing I recall from "studying" the missile layouts/options yesterday, is that you should be able to have a very fast missile that's invisible and uses an existing emitter layout data under "FIRE" which, to my understandng, describes how the missile looks while active. Sadly, I can't merge different layout types for missiles AND emitters, like you said already, with GUTS splitting them into different sections. Best I can do is reference FIRE layout once I complete the edits and hope for the best.
Now, for the more unexpected thing, the triggerable crash.
I've had the game for over 5 years and this is genuinely the first time it started crashing.
Blocks of code are as follows:
Main affix applied to the item itself:
Spoiler (hover to show) [AFFIX] <STRING>NAME:TRIGGERABLE_WEAPON_PROC_RAZE <INTEGER>RANK:0 <INTEGER>MIN_SPAWN_RANGE:0 <INTEGER>MAX_SPAWN_RANGE:999 <FLOAT>DURATION:0 <INTEGER>WEIGHT:0 <INTEGER>SLOTS_OCCUPY:0 [EFFECT] <STRING>NAME:WEAPON_PROC_RAZE_UNLOCK <STRING>ACTIVATION:DYNAMIC <STRING>DURATION:INSTANT <STRING>TYPE:ADD TRIGGERABLE <FLOAT>CHANCE:100 [/EFFECT] [EFFECT] <STRING>NAME:WEAPON_PROC_RAZE_UNLOCK_COUNT <STRING>ACTIVATION:DYNAMIC <STRING>DURATION:INSTANT <STRING>TYPE:ADD TRIGGERABLE <FLOAT>CHANCE:100 [/EFFECT] [/AFFIX]
2 files listed under ADD TRIGGERABLE. First is the main counter, 2nd is what triggers the counter, which enemy types and game events increase it.
Spoiler (hover to show) [TRIGGERABLEACTION] <STRING>NAME:WEAPON_PROC_RAZE_UNLOCK <TRANSLATE>DESCRIPTION:|cFFEAAA15Augmented Weapon:\n Kill 25 monsters to Upgrade (<stat:killcount_any>/25 killed) <STRING>GAMEEVENTTYPE:STAT <STRING>EVENTCREATOR:SELF <STRING>SUBTYPE:ADDSTAT <INTEGER>LEVEL:1 <FLOAT>FLOATCONDITION:25 <INTEGER>COOLDOWN:0 <BOOL>MESSAGEONTRIGGER:1 [AFFIXES] <STRING>AFFIX:UNIQUE_PROC_WEAPON_RAZE [STATWATCHER] <STRING>STAT:killcount_any <STRING>PRIMARY_TARGET_TYPE:SELF <STRING>SECONDARY_TARGET_TYPE:VALUE <STRING>WATCH_TYPE:GREATER THAN <FLOAT>SECONDARY_VALUE:24 [/STATWATCHER] [/AFFIXES] [TRIGGERABLESREMOVE] <STRING>TRIGGERABLE:WEAPON_PROC_RAZE_UNLOCK <STRING>TRIGGERABLE:WEAPON_PROC_RAZE_UNLOCK_COUNT [/TRIGGERABLESREMOVE] [/TRIGGERABLEACTION]
Spoiler (hover to show) [TRIGGERABLEACTION] <STRING>NAME:WEAPON_PROC_RAZE_UNLOCK_COUNT <STRING>GAMEEVENTTYPE:CHARACTER <STRING>EVENTCREATOR:ENEMY <STRING>SUBTYPE:DIE <INTEGER>LEVEL:1 <FLOAT>FLOATCONDITION:0 <INTEGER>COOLDOWN:0 <BOOL>TRIGGERONBEAREREVENTS:1 <BOOL>FILTERSELF:1 [WATCH_UNITTYPES] <STRING>UNITTYPE:MONSTER [/WATCH_UNITTYPES] [AFFIXES] <STRING>AFFIX:WEAPON_PROC_RAZE_UNLOCK_AFFIX [/AFFIXES] [/TRIGGERABLEACTION]
Stat addition file referenced in above file:
Spoiler (hover to show) [AFFIX] <STRING>NAME:WEAPON_PROC_RAZE_UNLOCK_AFFIX <INTEGER>RANK:0 <INTEGER>MIN_SPAWN_RANGE:0 <INTEGER>MAX_SPAWN_RANGE:999 <FLOAT>DURATION:0 <INTEGER>WEIGHT:0 <INTEGER>SLOTS_OCCUPY:0 [EFFECT] <STRING>NAME:killcount_any <STRING>ACTIVATION:DYNAMIC <STRING>DURATION:INSTANT <STRING>TYPE:ADD STAT <FLOAT>MIN:1 <FLOAT>MAX:1 <FLOAT>CHANCE:100 [/EFFECT] [/AFFIX]
And lastly, the affix that is supposed to be called when the counter hits its target:
Spoiler (hover to show) [AFFIX] <STRING>NAME:UNIQUE_PROC_WEAPON_RAZE <INTEGER>RANK:0 <INTEGER>MIN_SPAWN_RANGE:0 <INTEGER>MAX_SPAWN_RANGE:999 <FLOAT>DURATION:0 <INTEGER>WEIGHT:0 <INTEGER>SLOTS_OCCUPY:99 [UNITTYPES] <STRING>UNITTYPE:UNIQUE SOCKETABLE <STRING>UNITTYPE:WEAPON [/UNITTYPES] [NOT_UNITTYPES] <STRING>UNITTYPE:WEAPON [/NOT_UNITTYPES] [EFFECT] <STRING>NAME:BigStrike_Proc_Edit <STRING>ACTIVATION:PASSIVE <INTEGER>LEVEL:1 <STRING>TYPE:CAST SKILL ON MELEE STRIKE <STRING>DAMAGE_TYPE:ALL <STRING>STAT_SOURCE_TYPE:ON UPDATE CASTER <BOOL>SAVE:true <FLOAT>MIN:100 <FLOAT>MAX:100 [/EFFECT] [/AFFIX]
This could either be very easy or very difficult. Based on what I've seen, I only need the 4 main files, plus an extra one that controls the proc itself.
If I missed a required file, then I had no way of knowing that, unfortunately. I compared the 4 files side-by-side with vanilla game ones and the only real difference was that bool fields use 0/1 instead of false/true, but surely that wouldn't affect it, since the game insisted on doing that anyway.