[AGENTS] Talon Recruitment: Sombra + Widowmaker

Recommended Posts


Steam Workshop Page -- TalonMod_v004.zip (for non-steam)

It's hard to play this game about spies with cloaking, hacking, throwable teleporters, and the ability to enter 'overwatch', without thinking of Sombra.

This was the InvisInc first mod I started, but I felt I should finish a couple of others first before attempting to release it.
I'm glad I did. This was a *long* time in development, but I'm finally releasing it, ready for Overwatch's anniversary next week.


Sombra - A masterful infiltrator. She weaves through facilities unseen with a sprint-based cloaking rig, blasting opportune targets with her ranged EMP, then darts away to safety with her iconic translocators.


Augment: Short Ranged EMP -- store PWR from consoles, then use stored PWR to EMP devices.
 -- Max Stored PWR: 4, Max Range: 4 tiles.

Gadget: Kinetic Cloak Rig -- a cloak that can be prepped in sprint mode, and only activates while sprinting
 -- Distance: 5 tiles (not including start tile), Duration: Till end of turn, attacking, or cancelling sprint

Gadget: Translocator -- throw a beacon which the user can then teleport to. Beacon self-destructs after 2 turns and cannot be picked up.
 -- Lifetime: Till end of next turn, Max Carried: 3, Restockable: Charge Packs only restore 1 ammo per use.


Few spies work alone, though, so the pack also includes fellow Talon agent:

Widowmaker - The infamous assassin. Noone can hide from her sight; she stalks enemies with infra-vision before nullifying them with venom mines and her customised, twin-state sniper rifle.


Augment: Widowsight -- Reveals nearby enemies while peeking, reduces observe cost and max AP.
 -- Range: 5 tiles, Observe Cost: 0.5AP, Max AP: -0.5

Weapon: Widow's Kiss -- A variable assault/sniper rifle with independant ammo
 -- Assault Mode: 2 KO, 0 Pierce, Max 2 Charges (Charges do NOT re-stock between missions)
 -- Sniper Mode: Lethal, 1 Pierce, Max 1 Ammo, - 4 AP (AP is returned if toggled back without firing)

Gadget: Venom Mine -- Motion-sensitive mine that releases acidic smoke when triggered
 -- Thrown, Threat range: adjacent tiles, -1 AP to enemies in threat range. Cloud equal to smoke grenade.


I've done my best to balance it, but I wanted to stay true to the characters and the heroes of Overwatch are over-powered by design. Sombra alone is a mix of Decker, Xu and Derek, while Widow's Augment could easily be one of the best in the game, even before her sniper rifle, so reigning them in has been tricky. 
Let me know what you think, if you find any bugs or what-not, and, other than that, I hope you enjoy it!





v002 fixes an issue with Sombra missing sprites when interacting with enemies.


Link to comment
Share on other sites

I don't play Overwatch, but these are very well made agents, looking forward to playing with this!

I did find some bugs:

1. Sombra's ranged EMP gives an error, replace line 109 with:

		sim:dispatchEvent( simdefs.EV_UNIT_WIRELESS_SCAN, { unitID = unit:getID(), targetUnitID = target, hijack = true } )

2. Widow's Kiss sniper mode ammo cannot be reloaded with charge packs.

3. Venom Mine's motion tracker reveals units walking by, but it looks choppy, please remove that aspect.

4. Sombra's Translocator is supposed to detonate when turn ends, but it does it one turn later that it's supposed to.

5. Restock ability for Translocator does not work correctly with Charge Generator and Extended Charge Packs from NewItemsAndAugments mod, replace lines 56-63 in restock.lua with below to make it compatible:

		local ammoClip = array.findIf( userUnit:getChildren(), 
			function( u ) 
			if u:getTraits().ammo_clip ~= nil and ( not u:getTraits().charges or (u:getTraits().charges and u:getTraits().charges > 0)) then
				return u:getTraits().ammo_clip
			else return nil end end )

		if ammoClip then
			ammoClip:getTraits().ammo_clip = ammoClip:getTraits().ammo_clip - 1
			if ammoClip:getTraits().ammo then
				ammoClip:getTraits().ammo = ammoClip:getTraits().ammo - 1
			if ammoClip:getTraits().charges then
				ammoClip:getTraits().charges = ammoClip:getTraits().charges - 1
				ammoClip:getTraits().ammo_clip = ammoClip:getTraits().ammo_clip + 1
			if ammoClip:getTraits().ammo_clip <= 0 or ammoClip:getTraits().ammo <= 0 then
				inventory.tra****em( sim, userUnit, ammoClip )
			ammoConsumed = true


Link to comment
Share on other sites

Oh, wow, that's really cool, thankyou for the help!

All that's been fixed - the reload's most annoying as I had that working a little while ago and obviously forgot to double check it after I re-worked the toggle code -_-

The code was ultra useful (even though the forum censored the middle of trash-item and I had to go digging for errors) and I'm always happy for more inter-compatability with mods

The translocator is actually working as intended, but I updated the text to be a bit clearer (end of next turn > end of following turn)

Link to comment
Share on other sites

Sorry, there is another bug in the restock code I gave you, that I have just found and fixed in items mod. Game hangs up (comparison between nil and number) when both Charge Generator and Extended Charge Pack are in inventory while reloading. Change line 73 in restock.lua to:

					if ammoClip:getTraits().ammo_clip <= 0 or (ammoClip:getTraits().ammo and ammoClip:getTraits().ammo <= 0) then

And line 38 to:

			local hasAmmo = array.findIf( unit:getChildren(), 
			function( u ) 
			if u:getTraits().ammo_clip ~= nil and ( not u:getTraits().charges or (u:getTraits().charges and u:getTraits().charges > 0)) then
				return u:getTraits().ammo_clip
			else return nil end end )


Again, sorry for the trouble.

Link to comment
Share on other sites

Also, Charge Generators and Extended Charge Packs don't work correctly when reloading Widow's Kiss in Sniper mode (that same code used for the other types of reloads should work), and when thrown Translocators are labelled as Venom Mines, can be teleported to even if the exit is blocked, and cause guards to be alerted on sight. Not sure if that last one is intentional or not, it is has the laptop trait which as far as I know does nothing other than causing guards to be drawn to it. Maybe it should have the hidesInCover trait?

This is code from Derek's Transport Beacon rewritten to fit the context:

			local cell = sim:getCell(targetUnit:getLocation())
			if cell.impass > 0 or sim:getQuery().checkDynamicImpass(sim, cell) then


Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.