Hid Crawlways of Kithgard. A/B testing Haunted Kithmaze vs. The First Kithmaze. Renamed New Sight to Dread Door and awarded its glasses later.

This commit is contained in:
Nick Winter 2014-11-05 10:40:37 -08:00
parent a2554570b0
commit 6efcbc5ead
7 changed files with 74 additions and 43 deletions

View file

@ -99,7 +99,7 @@ module.exports = class World
continueLaterFn = => continueLaterFn = =>
@loadFrames(loadedCallback, errorCallback, loadProgressCallback, preloadedCallback, skipDeferredLoading, loadUntilFrame) unless @destroyed @loadFrames(loadedCallback, errorCallback, loadProgressCallback, preloadedCallback, skipDeferredLoading, loadUntilFrame) unless @destroyed
if @realTime and not @countdownFinished if @realTime and not @countdownFinished
if @levelID in ['the-first-kithmaze', 'the-second-kithmaze', 'the-final-kithmaze', 'the-gauntlet', 'winding-trail', 'thornbush-farm'] if @levelID in ['the-first-kithmaze', 'haunted-kithmaze', 'the-second-kithmaze', 'the-final-kithmaze', 'the-gauntlet', 'winding-trail', 'thornbush-farm']
@realTimeSpeedFactor = 5 @realTimeSpeedFactor = 5
else if @levelID in ['forgotten-gemsmith', 'descending-further', 'tactical-strike', 'kithgard-gates'] else if @levelID in ['forgotten-gemsmith', 'descending-further', 'tactical-strike', 'kithgard-gates']
@realTimeSpeedFactor = 3 @realTimeSpeedFactor = 3

View file

@ -88,7 +88,7 @@ module.exports = class User extends CocoModel
when 2 then 'choice-explicit' when 2 then 'choice-explicit'
when 3 then 'choice-implicit' when 3 then 'choice-implicit'
@branchingGroup = 'choice-explicit' if me.isAdmin() @branchingGroup = 'choice-explicit' if me.isAdmin()
application.tracker.identify branchingGroup: @branchingGroup application.tracker.identify branchingGroup: @branchingGroup unless me.isAdmin()
@branchingGroup @branchingGroup
getHighlightArrowSoundGroup: -> getHighlightArrowSoundGroup: ->
@ -98,5 +98,15 @@ module.exports = class User extends CocoModel
when 0, 1, 2, 3 then 'sound-off' when 0, 1, 2, 3 then 'sound-off'
when 4, 5, 6, 7 then 'sound-on' when 4, 5, 6, 7 then 'sound-on'
@highlightArrowGroup = 'sound-off' if me.isAdmin() @highlightArrowGroup = 'sound-off' if me.isAdmin()
application.tracker.identify highlightArrowGroup: @highlightArrowGroup application.tracker.identify highlightArrowGroup: @highlightArrowGroup unless me.isAdmin()
@highlightArrowGroup @highlightArrowGroup
getKithmazeGroup: ->
return @kithmazeGroup if @kithmazeGroup
group = me.get('testGroupNumber') % 16
@kithmazeGroup = switch group
when 0, 1, 2, 3, 4, 5, 6, 7 then 'the-first-kithmaze'
when 8, 9, 10, 11, 12, 13, 14, 15 then 'haunted-kithmaze'
@kithmazeGroup = 'haunted-kithmaze' if me.isAdmin()
application.tracker.identify kithmazeGroup: @kithmazeGroup unless me.isAdmin()
@kithmazeGroup

View file

@ -340,23 +340,25 @@ module.exports = class InventoryView extends CocoView
'simple-sword': '53e218d853457600003e3ebe' 'simple-sword': '53e218d853457600003e3ebe'
'leather-tunic': '53e22eac53457600003e3efc' 'leather-tunic': '53e22eac53457600003e3efc'
'leather-boots': '53e2384453457600003e3f07' 'leather-boots': '53e2384453457600003e3f07'
'leather-belt': '5437002a7beba4a82024a97d'
'programmaticon-i': '53e4108204c00d4607a89f78' 'programmaticon-i': '53e4108204c00d4607a89f78'
'crude-glasses': '53e238df53457600003e3f0b' 'crude-glasses': '53e238df53457600003e3f0b'
'builders-hammer': '53f4e6e3d822c23505b74f42' 'builders-hammer': '53f4e6e3d822c23505b74f42'
gearByLevel = gearByLevel =
'dungeons-of-kithgard': {feet: 'simple-boots'} 'dungeons-of-kithgard': {feet: 'simple-boots'}
'gems-in-the-deep': {feet: 'simple-boots'} 'gems-in-the-deep': {feet: 'simple-boots'}
'forgetful-gemsmith': {feet: 'simple-boots'}
'shadow-guard': {feet: 'simple-boots'} 'shadow-guard': {feet: 'simple-boots'}
'kounter-kithwise': {feet: 'simple-boots'} 'kounter-kithwise': {feet: 'simple-boots'}
'crawlways-of-kithgard': {feet: 'simple-boots'} 'crawlways-of-kithgard': {feet: 'simple-boots'}
'true-names': {feet: 'simple-boots', 'right-hand': 'simple-sword'} 'forgetful-gemsmith': {feet: 'simple-boots'}
'true-names': {feet: 'simple-boots', 'right-hand': 'simple-sword', waist: 'leather-belt'}
'favorable-odds': {feet: 'simple-boots', 'right-hand': 'simple-sword'} 'favorable-odds': {feet: 'simple-boots', 'right-hand': 'simple-sword'}
'the-raised-sword': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic'} 'the-raised-sword': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic'}
'the-first-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} 'the-first-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'}
'haunted-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'}
'descending-further': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} 'descending-further': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'}
'the-second-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} 'the-second-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'}
'new-sight': {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} 'dread-door': {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'}
'known-enemy': {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} 'known-enemy': {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'}
'master-of-names': {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} 'master-of-names': {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'}
'lowly-kithmen': {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} 'lowly-kithmen': {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'}

View file

@ -630,22 +630,8 @@ dungeon = [
x: 29 x: 29
y: 12 y: 12
nextLevels: nextLevels:
more_practice: 'forgetful-gemsmith'
continue: 'shadow-guard' continue: 'shadow-guard'
skip_ahead: 'true-names' skip_ahead: 'forgetful-gemsmith'
}
{
name: 'Forgetful Gemsmith'
type: 'hero'
difficulty: 1
id: 'forgetful-gemsmith'
original: '544a98f62d002f0000fe331a'
description: 'Grab even more gems as you practice moving.'
x: 38
y: 12
nextLevels:
continue: 'shadow-guard'
practice: true
} }
{ {
name: 'Shadow Guard' name: 'Shadow Guard'
@ -654,11 +640,11 @@ dungeon = [
id: 'shadow-guard' id: 'shadow-guard'
original: '54174347844506ae0195a0b8' original: '54174347844506ae0195a0b8'
description: 'Evade the Kithgard minion.' description: 'Evade the Kithgard minion.'
x: 50 x: 41
y: 11 y: 13
nextLevels: nextLevels:
more_practice: 'kounter-kithwise' more_practice: 'kounter-kithwise'
continue: 'true-names' continue: 'forgetful-gemsmith'
} }
{ {
name: 'Kounter Kithwise' name: 'Kounter Kithwise'
@ -667,25 +653,37 @@ dungeon = [
id: 'kounter-kithwise' id: 'kounter-kithwise'
original: '54527a6257e83800009730c7' original: '54527a6257e83800009730c7'
description: 'Practice your evasion skills with more guards.' description: 'Practice your evasion skills with more guards.'
x: 58 x: 50
y: 10 y: 14
nextLevels: nextLevels:
more_practice: 'crawlways-of-kithgard' #more_practice: 'crawlways-of-kithgard'
continue: 'true-names' continue: 'true-names'
practice: true practice: true
} }
#{
# name: 'Crawlways of Kithgard'
# type: 'hero'
# difficulty: 1
# id: 'crawlways-of-kithgard'
# original: '545287ef57e83800009730d5'
# description: 'Dart in and grab the gemat the right moment.'
# x: 57
# y: 12
# nextLevels:
# continue: 'true-names'
# practice: true
#}
{ {
name: 'Crawlways of Kithgard' name: 'Forgetful Gemsmith'
type: 'hero' type: 'hero'
difficulty: 1 difficulty: 1
id: 'crawlways-of-kithgard' id: 'forgetful-gemsmith'
original: '545287ef57e83800009730d5' original: '544a98f62d002f0000fe331a'
description: 'Dart in and grab the gemat the right moment.' description: 'Grab even more gems as you practice moving.'
x: 67 x: 63
y: 10 y: 13
nextLevels: nextLevels:
continue: 'true-names' continue: 'shadow-guard'
practice: true
} }
{ {
name: 'True Names' name: 'True Names'
@ -695,7 +693,7 @@ dungeon = [
original: '541875da4c16460000ab990f' original: '541875da4c16460000ab990f'
description: 'Learn an enemy\'s true name to defeat it.' description: 'Learn an enemy\'s true name to defeat it.'
x: 74 x: 74
y: 12 y: 14
nextLevels: nextLevels:
more_practice: 'favorable-odds' more_practice: 'favorable-odds'
continue: 'the-raised-sword' continue: 'the-raised-sword'
@ -737,7 +735,21 @@ dungeon = [
nextLevels: nextLevels:
more_practice: 'descending-further' more_practice: 'descending-further'
continue: 'the-second-kithmaze' continue: 'the-second-kithmaze'
skip_ahead: 'new-sight' skip_ahead: 'dread-door'
}
{
name: 'Haunted Kithmaze'
type: 'hero'
difficulty: 1
id: 'haunted-kithmaze'
original: '545a5914d820eb0000f6dc0a'
description: 'The builders of Kithgard constructed many mazes to confuse travelers.'
x: 78
y: 29
nextLevels:
more_practice: 'descending-further'
continue: 'the-second-kithmaze'
skip_ahead: 'dread-door'
} }
{ {
name: 'Descending Further' name: 'Descending Further'
@ -762,15 +774,15 @@ dungeon = [
x: 59 x: 59
y: 25 y: 25
nextLevels: nextLevels:
continue: 'new-sight' continue: 'dread-door'
} }
{ {
name: 'New Sight' name: 'Dread Door'
type: 'hero' type: 'hero'
difficulty: 1 difficulty: 1
id: 'new-sight' id: 'dread-door'
original: '5418d40f4c16460000ab9ac2' original: '5418d40f4c16460000ab9ac2'
description: 'A true name can only be seen with the correct lenses.' description: 'Behind a dread door lies a chest full of riches.'
x: 60 x: 60
y: 34 y: 34
nextLevels: nextLevels:
@ -1006,3 +1018,9 @@ WorldMapView.campaigns = campaigns = [
{id: 'dungeon', name: 'Dungeon Campaign', levels: dungeon } {id: 'dungeon', name: 'Dungeon Campaign', levels: dungeon }
{id: 'forest', name: 'Forest Campaign', levels: forest } {id: 'forest', name: 'Forest Campaign', levels: forest }
] ]
# A/B testing first kithmaze level: The First Kithmaze vs. Haunted Kithmaze
if me.getKithmazeGroup() is 'the-first-kithmaze'
_.remove dungeon, id: 'haunted-kithmaze'
else
_.remove dungeon, id: 'the-first-kithmaze'

View file

@ -30,7 +30,7 @@ module.exports = class LevelHUDView extends CocoView
afterRender: -> afterRender: ->
super() super()
@$el.addClass 'no-selection' @$el.addClass 'no-selection'
if @options.level.get('slug') in ['dungeons-of-kithgard', 'gems-in-the-deep', 'forgetful-gemsmith', 'shadow-guard', 'kounter-kithwise', 'crawlways-of-kithgard', 'true-names', 'favorable-odds', 'the-raised-sword', 'the-first-kithmaze', 'descending-further', 'the-second-kithmaze', 'new-sight', 'known-enemy', 'master-of-names', 'lowly-kithmen', 'closing-the-distance', 'tactical-strike', 'the-final-kithmaze', 'the-gauntlet'] if @options.level.get('slug') in ['dungeons-of-kithgard', 'gems-in-the-deep', 'forgetful-gemsmith', 'shadow-guard', 'kounter-kithwise', 'crawlways-of-kithgard', 'true-names', 'favorable-odds', 'the-raised-sword', 'the-first-kithmaze', 'haunted-kithmaze', 'descending-further', 'the-second-kithmaze', 'dread-door', 'known-enemy', 'master-of-names', 'lowly-kithmen', 'closing-the-distance', 'tactical-strike', 'the-final-kithmaze', 'the-gauntlet']
@hidesHUD = true @hidesHUD = true
@$el.addClass 'hide-hud-properties' @$el.addClass 'hide-hud-properties'

View file

@ -108,7 +108,7 @@ module.exports = class CastButtonView extends CocoView
else if castable else if castable
s = $.i18n.t('play_level.tome_cast_button_run') s = $.i18n.t('play_level.tome_cast_button_run')
s = $.i18n.t('play_level.tome_cast_button_casting') if s is 'Run' and me.get('preferredLanguage').split('-')[0] isnt 'en' # Temporary, if tome_cast_button_running isn't translated. s = $.i18n.t('play_level.tome_cast_button_casting') if s is 'Run' and me.get('preferredLanguage').split('-')[0] isnt 'en' # Temporary, if tome_cast_button_running isn't translated.
unless @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'true-names', 'the-raised-sword', 'the-first-kithmaze'] # Hide for first few. unless @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'forgetful-gemsmith', 'kounter-kithwise', 'true-names', 'the-raised-sword', 'favorable-odds', 'the-first-kithmaze', 'haunted-kithmaze'] # Hide for first few.
s += ' ' + @castShortcut s += ' ' + @castShortcut
else else
s = $.i18n.t('play_level.tome_cast_button_ran') s = $.i18n.t('play_level.tome_cast_button_ran')

View file

@ -871,4 +871,5 @@ requiredCodePerLevel =
'dungeons-of-kithgard': ['moveRight'] 'dungeons-of-kithgard': ['moveRight']
'true-names': ['Brak'] 'true-names': ['Brak']
'the-first-kithmaze': ['loop'] 'the-first-kithmaze': ['loop']
'haunted-kithmaze': ['loop']
'lowly-kithmen': ['findNearestEnemy'] 'lowly-kithmen': ['findNearestEnemy']