For your first problem:
• JASS is surely the easiest way to do it. In JASS you can merge regions to form an irregular shape which can still be used for everything, including the unit leaves region event.
• GUI always means extra work. You will have to have a HUGE condition. Example:
Trigger by 3ICE
....
Events
........
Unit - A unit enters Region 000 <gen>
........
Unit - A unit enters Region 001 <gen>
........
Unit - A unit enters Region 002 <gen>
........
Unit - A unit enters Region 003 <gen>
........
Unit - A unit enters Region 004 <gen>
........
Unit - A unit enters Region 005 <gen>
........
Unit - A unit enters Region 006 <gen>
........
Unit - A unit enters Region 007 <gen>
........
Unit - A unit enters Region 008 <gen>
........
Unit - A unit enters Region 009 <gen>
........
Unit - A unit enters Region 010 <gen>
........
Unit - A unit enters Region 011 <gen>
....
Conditions
........
And - All (Conditions) are true
............
Conditions
................
(Region 000 <gen> contains (Triggering unit)) Equal to False
................
(Region 001 <gen> contains (Triggering unit)) Equal to False
................
(Region 002 <gen> contains (Triggering unit)) Equal to False
................
(Region 003 <gen> contains (Triggering unit)) Equal to False
................
(Region 004 <gen> contains (Triggering unit)) Equal to False
................
(Region 005 <gen> contains (Triggering unit)) Equal to False
................
(Region 006 <gen> contains (Triggering unit)) Equal to False
................
(Region 007 <gen> contains (Triggering unit)) Equal to False
................
(Region 008 <gen> contains (Triggering unit)) Equal to False
................
(Region 009 <gen> contains (Triggering unit)) Equal to False
................
(Region 010 <gen> contains (Triggering unit)) Equal to False
................
(Region 011 <gen> contains (Triggering unit)) Equal to False
....
Actions
........
Wait 10.00 seconds
........
Unit - Kill (Triggering unit)
For your second problem:
• Make some objectives down in those trenches and if one team holds 80% of all objectives (eg.: 8/10, 16/20) they win. These could be anything, flags, castles, tents, medic posts, barracks.
• What about comparing the number of alive units?
Trigger by 3ICE
....
Events
........
Time - Every 2.00 seconds of game time
....
Conditions
....
Actions
........
Set team1units = (Number of units in (Units owned by Player 1 (Red)))
........
Set team1units = (team1units + (Number of units in (Units owned by Player 3)))
........
Set team1units = (team1units + (Number of units in (Units owned by Player 5)))
........
Set team1units = (team1units + (Number of units in (Units owned by Player 7)))
........
Set team1units = (team1units + (Number of units in (Units owned by Player 9)))
........
Set team1units = (team1units + (Number of units in (Units owned by Player 11)))
........
Set team2units = (Number of units in (Units owned by Player 2 (Blue)))
........
Set team2units = (team2units + (Number of units in (Units owned by Player 4)))
........
Set team2units = (team2units + (Number of units in (Units owned by Player 6)))
........
Set team2units = (team2units + (Number of units in (Units owned by Player 8)))
........
Set team2units = (team2units + (Number of units in (Units owned by Player 10)))
........
Set team2units = (team2units + (Number of units in (Units owned by Player 12)))
........
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
............
If - Conditions
................
team1units Greater than (team2units x 3)
............
Then - Actions
................
Game - Victory Player 1 (Red) (Show dialogs, Show scores)
............
Else - Actions
........
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
............
If - Conditions
................
team2units Greater than (team1units x 3)
............
Then - Actions
................
Game - Victory Player 2 (Blue) (Show dialogs, Show scores)
............
Else - Actions(The trigger leaks but I think you would rather have the leaks than custom script and tempVariables)
EDIT: Instead of killing everything, with the Unit - Kill trigger (Which would make players hate you) use real mortars. For every unit on the surface, in every second, you launch a mortar at a random point. If the unit has so bad luck to get hit, it dies. If it doesn't get hit but stays on the surface, it's chance of death increases.