2013-02-17 05:42:42 +00:00
|
|
|
<modals:>
|
2013-05-03 11:04:17 +00:00
|
|
|
{{#each _partyMembers as :profile}}
|
|
|
|
|
<app:modals:modal modalId="avatar-modal-{{:profile.id}}">
|
|
|
|
|
<app:avatar:profile profile={{:profile}} />
|
|
|
|
|
<@footer>
|
|
|
|
|
<button data-dismiss="modal" class="btn btn-success">Ok</button>
|
|
|
|
|
</@footer>
|
|
|
|
|
</app:modals:modal>
|
|
|
|
|
{{/}}
|
2013-02-17 05:55:52 +00:00
|
|
|
|
2013-02-17 06:22:34 +00:00
|
|
|
<avatar:>
|
2013-03-19 03:42:03 +00:00
|
|
|
<figure class="herobox"
|
2013-05-10 14:39:43 +00:00
|
|
|
data-name="{username(@profile.auth, @profile.profile.name)} - lvl {@profile.stats.lvl}"
|
2013-03-19 03:42:03 +00:00
|
|
|
data-level="{@profile.stats.lvl}"
|
2013-03-19 04:04:24 +00:00
|
|
|
data-checkpet="{#if @profile.items.pet}hasPet{/}"
|
2013-05-03 09:56:51 +00:00
|
|
|
data-checkuser="{{#if @main}}isUser{{/}}"
|
2013-05-03 11:04:17 +00:00
|
|
|
data-uid="{{@profile.id}}" x-bind="click:clickAvatar"
|
2013-05-10 14:39:43 +00:00
|
|
|
rel="popover" data-placement="bottom" data-trigger="hover" data-html="true" data-content="{{#unless @main}}
|
2013-03-21 18:36:05 +00:00
|
|
|
<div>
|
|
|
|
|
<div class='progress progress-danger' style='height:5px;'>
|
|
|
|
|
<div class='bar' style='height: 5px; width: {percent(@profile.stats.hp, 50)}%;'></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class='progress progress-warning' style='height:5px;'>
|
|
|
|
|
<div class='bar' style='height: 5px; width: {percent(@profile.stats.exp, tnl(@profile.stats.lvl))}%;'></div>
|
|
|
|
|
</div>
|
2013-03-25 20:03:13 +00:00
|
|
|
<div>Level: {@profile.stats.lvl}</div>
|
2013-04-15 06:27:38 +00:00
|
|
|
<div>GP: {floor(@profile.stats.gp)}</div>
|
|
|
|
|
<div>{count(@profile.items.pets)} / 90 Pets Found</div>
|
2013-03-21 18:36:05 +00:00
|
|
|
</div>
|
2013-05-10 14:39:43 +00:00
|
|
|
{{/}}">
|
2013-02-17 06:22:34 +00:00
|
|
|
<div class='character-sprites'>
|
|
|
|
|
{#with @profile.preferences as :p}
|
2013-05-10 11:25:24 +00:00
|
|
|
<span class='{#if @profile.flags.rest}zzz{/}'></span>
|
2013-03-23 04:40:12 +00:00
|
|
|
<span class='{:p.gender}_skin_{:p.skin}'></span>
|
|
|
|
|
<span class='{:p.gender}_hair_{:p.hair}'></span>
|
2013-05-08 14:42:44 +00:00
|
|
|
<span class="{equipped('armor', @profile.items.armor, @profile.preferences, @profile.backer.tier)}"></span>
|
2013-03-23 04:40:12 +00:00
|
|
|
{#if :p.showHelm}
|
2013-05-08 14:42:44 +00:00
|
|
|
<span class="{equipped('head', @profile.items.head, @profile.preferences, @profile.backer.tier)}"></span>
|
2013-03-23 04:40:12 +00:00
|
|
|
{else}
|
|
|
|
|
<span class="{:p.gender}_head_0"></span>
|
|
|
|
|
{/}
|
2013-05-08 14:42:44 +00:00
|
|
|
<span class="{equipped('shield', @profile.items.shield, @profile.preferences, @profile.backer.tier)}"></span>
|
|
|
|
|
<span class="{equipped('weapon', @profile.items.weapon, @profile.preferences, @profile.backer.tier)}"></span>
|
2013-03-15 21:20:01 +00:00
|
|
|
{/}
|
2013-03-23 04:40:12 +00:00
|
|
|
{#if and(@profile.items.currentPet, not(@minimal))}
|
2013-03-27 05:15:52 +00:00
|
|
|
<span class="Pet-{@profile.items.currentPet.name}-{@profile.items.currentPet.modifier} current-pet" ></span>
|
2013-02-17 06:22:34 +00:00
|
|
|
{/}
|
|
|
|
|
</div>
|
2013-03-19 03:42:03 +00:00
|
|
|
</figure>
|
2013-02-17 06:22:34 +00:00
|
|
|
|
2013-02-17 05:55:52 +00:00
|
|
|
<customize:>
|
|
|
|
|
|
|
|
|
|
<!-- customization options -->
|
2013-03-18 19:43:02 +00:00
|
|
|
{#with _user.preferences as :p}
|
2013-02-17 05:55:52 +00:00
|
|
|
<menu type="list">
|
2013-03-18 19:43:02 +00:00
|
|
|
<!-- gender -->
|
2013-02-17 05:55:52 +00:00
|
|
|
<li class="customize-menu">
|
2013-03-18 19:43:02 +00:00
|
|
|
<menu label="Head">
|
|
|
|
|
<button type="button" class="m_head_0 customize-option" data-value="m" x-bind="click:customizeGender"></button>
|
|
|
|
|
<button type="button" class="f_head_0 customize-option" data-value="f" x-bind="click:customizeGender"></button>
|
|
|
|
|
</menu>
|
|
|
|
|
<label class="checkbox">
|
|
|
|
|
<input type=checkbox checked="{_user.preferences.showHelm}" /> Show Helm
|
|
|
|
|
</label>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<!-- hair -->
|
|
|
|
|
<li class="customize-menu">
|
|
|
|
|
<menu label="Hair">
|
|
|
|
|
<button type="button" class="{:p.gender}_hair_blond customize-option" data-value="blond" x-bind="click:customizeHair"></button>
|
|
|
|
|
<button type="button" class="{:p.gender}_hair_black customize-option" data-value="black" x-bind="click:customizeHair"></button>
|
|
|
|
|
<button type="button" class="{:p.gender}_hair_brown customize-option" data-value="brown" x-bind="click:customizeHair"></button>
|
|
|
|
|
<button type="button" class="{:p.gender}_hair_white customize-option" data-value="white" x-bind="click:customizeHair"></button>
|
|
|
|
|
</menu>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<!-- skin -->
|
2013-02-17 05:55:52 +00:00
|
|
|
<li class="customize-menu">
|
2013-03-18 19:43:02 +00:00
|
|
|
<menu label="Skin">
|
|
|
|
|
<button type="button" class='{:p.gender}_skin_dead customize-option' data-value="dead" x-bind="click:customizeSkin"></button>
|
|
|
|
|
<button type="button" class='{:p.gender}_skin_orc customize-option' data-value="orc" x-bind="click:customizeSkin"></button>
|
|
|
|
|
<button type="button" class='{:p.gender}_skin_asian customize-option' data-value="asian" x-bind="click:customizeSkin"></button>
|
|
|
|
|
<button type="button" class='{:p.gender}_skin_black customize-option' data-value="black" x-bind="click:customizeSkin"></button>
|
|
|
|
|
<button type="button" class='{:p.gender}_skin_white customize-option' data-value="white" x-bind="click:customizeSkin"></button>
|
2013-02-17 05:55:52 +00:00
|
|
|
</menu>
|
|
|
|
|
</li>
|
|
|
|
|
</menu>
|
2013-03-18 19:43:02 +00:00
|
|
|
|
|
|
|
|
{#if equal(_user.preferences.gender, 'f')} <!-- Sorry boys -->
|
|
|
|
|
<menu type="list">
|
|
|
|
|
<li class="customize-menu">
|
|
|
|
|
<menu label="Clothing">
|
|
|
|
|
<button type="button" class="f_armor_0_v1 customize-option" data-value="v1" x-bind="click:customizeArmorSet"></button>
|
|
|
|
|
<button type="button" class="f_armor_0_v2 customize-option" data-value="v2" x-bind="click:customizeArmorSet"></button>
|
|
|
|
|
</menu>
|
|
|
|
|
</li>
|
|
|
|
|
</menu>
|
|
|
|
|
{/}
|
2013-02-17 05:55:52 +00:00
|
|
|
{/}
|
2013-02-17 05:42:42 +00:00
|
|
|
|
2013-05-02 12:17:04 +00:00
|
|
|
<profile-edit:>
|
|
|
|
|
<!--<a class='btn btn-success' x-bind="click:profileSave">Save</a>-->
|
|
|
|
|
<!-- TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak -->
|
|
|
|
|
<img class='pull-right' src="{_user.profile.imageUrl}" />
|
|
|
|
|
<div class="control-group">
|
|
|
|
|
<label class="control-label" for="profileImageUrl">Photo Url</label>
|
|
|
|
|
<div class="controls">
|
|
|
|
|
<input type="url" id="profileImageUrl" value="{_user.profile.imageUrl}" placeholder="Image Url"/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2013-02-17 05:42:42 +00:00
|
|
|
|
2013-05-02 12:17:04 +00:00
|
|
|
<div class="control-group">
|
|
|
|
|
<label class="control-label" for="profileFullName">Full Name</label>
|
|
|
|
|
<div class="controls">
|
|
|
|
|
<input type="text" id="profileFullName" placeholder="Full Name" value="{_user.profile.name}" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="control-group">
|
|
|
|
|
<label class="control-label" for="profileBlurb">Blurb</label>
|
|
|
|
|
<div class="controls">
|
|
|
|
|
<textarea id="profileBlurb" placeholder="Blurb" >{_user.profile.blurb}</textarea>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2013-02-17 05:42:42 +00:00
|
|
|
|
2013-05-02 12:17:04 +00:00
|
|
|
<div class="control-group">
|
|
|
|
|
<label class="control-label" for="profileWebsite">Websites</label>
|
|
|
|
|
<div class="controls">
|
|
|
|
|
<form x-bind="submit:profileAddWebsite">
|
|
|
|
|
<input type="url" id="profileWebsite" value="{_newProfileWebsite}" placeholder="Add Website"/>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<ul>
|
|
|
|
|
<!-- would prefer if there were and index in #each, instead using data-website to search with indexOf -->
|
|
|
|
|
{#each _user.profile.websites as :website}
|
|
|
|
|
<li>{:website} <a data-website="{:website}" x-bind="click:profileRemoveWebsite"><i class='icon-remove'></i></a></li>
|
|
|
|
|
{/}
|
|
|
|
|
</ul>
|
2013-02-17 05:42:42 +00:00
|
|
|
|
2013-05-02 12:17:04 +00:00
|
|
|
</div>
|
2013-03-18 19:43:02 +00:00
|
|
|
|
2013-05-02 12:17:04 +00:00
|
|
|
<profile:>
|
|
|
|
|
<div class='row-fluid'>
|
|
|
|
|
<div class='span6'>
|
2013-05-03 11:04:17 +00:00
|
|
|
<h3>{{username(@profile.auth, @profile.profile.name)}}</h3>
|
|
|
|
|
{{#if @profile.profile.imageUrl}}
|
|
|
|
|
<img src="{{@profile.profile.imageUrl}}" />
|
|
|
|
|
{{/}}
|
|
|
|
|
{{#if @profile.profile.blurb}}
|
|
|
|
|
<p>{{@profile.profile.blurb}}</p>
|
|
|
|
|
{{/}}
|
|
|
|
|
{{#if @profile.profile.websites}}
|
2013-05-02 12:17:04 +00:00
|
|
|
<ul>
|
2013-05-03 11:04:17 +00:00
|
|
|
{{#each @profile.profile.websites as :website}}
|
|
|
|
|
<li>{{:website}}</li>
|
|
|
|
|
{{/}}
|
2013-05-02 12:17:04 +00:00
|
|
|
</ul>
|
2013-05-03 11:04:17 +00:00
|
|
|
{{/}}
|
2013-02-17 05:42:42 +00:00
|
|
|
</div>
|
2013-02-17 20:07:56 +00:00
|
|
|
<div class='span6'>
|
|
|
|
|
<h3>Achievements</h3>
|
2013-05-03 14:27:35 +00:00
|
|
|
<app:avatar:achievements profile={{@profile}} />
|
2013-02-17 20:07:56 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2013-02-17 05:42:42 +00:00
|
|
|
|
2013-02-17 20:07:56 +00:00
|
|
|
<achievements:>
|
2013-05-03 15:06:25 +00:00
|
|
|
<div class='achievements-container'>
|
|
|
|
|
<!--<div class='achievement achievement-sword'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-tree'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-comment'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-cave'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-sun'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-boot'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-coffin'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-alien'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-ninja'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-cactus'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-bow'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-shield'></div>-->
|
|
|
|
|
<!--<div class='achievement achievement-karaoke'></div>-->
|
2013-05-07 16:21:50 +00:00
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={{@profile.backer.npc}} classes='achievement-helm' unlockable=false profile={{@profile}}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5><span class='label label-success'>{{@profile.backer.npc}} NPC</span></h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
<small>Backed the Kickstarter project at the maximum level!</small>
|
|
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={{@profile.backer.contributor}} classes='achievement-firefox' unlockable=true profile={{@profile}}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
{{#if @profile.backer.contributor}}
|
|
|
|
|
<span class='label label-inverse'>{{@profile.backer.contributor}}</span>
|
|
|
|
|
{{else}}
|
|
|
|
|
<span class='label'>Contributor</span>
|
|
|
|
|
{{/}}
|
2013-05-07 16:53:18 +00:00
|
|
|
</h5>
|
2013-05-08 19:13:47 +00:00
|
|
|
<small>Has contributed to HabitRPG (code, design, pixel art, legal advice, docs, etc). Want this badge? Fix a bug :)</small>
|
2013-05-07 16:21:50 +00:00
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={{@profile.backer.tier}} classes='achievement-heart' unlockable=false profile={{@profile}}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5>Kickstarter Backer - ${{@profile.backer.tier}} Tier</h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
<small>Backed the Kickstarter Project</small>
|
|
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={@profile.achievements.streak} classes='achievement-thermometer' unlockable=true profile={@profile}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5>{#if @profile.achievements.streak}{@profile.achievements.streak}{else}0{/} Streak Achievement(s)</h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
<small>Has performed {#if @profile.achievements.streak}{@profile.achievements.streak}{else}0{/} 21-day streaks on Dailies</small>
|
|
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={@profile.achievements.originalUser} classes='achievement-cake' unlockable=false profile={@profile}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5>Original User</h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
<small>Goes way back to the Habit's days of yore (bless them for soldiering through bugs!)</small>
|
|
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={@profile.achievements.ultimateGear} classes='achievement-armor' unlockable=true profile={@profile}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5>Ultimate Gear</h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
<small>Has upgraded to the maximum weapon and armor set</small>
|
|
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
<app:avatar:achievement unlocked={@profile.achievements.beastMaster} classes='achievement-rat' unlockable=true profile={@profile}>
|
2013-05-07 16:53:18 +00:00
|
|
|
<h5>Beast Master</h5>
|
2013-05-07 16:21:50 +00:00
|
|
|
<small>Has found all 90 pets (insanely difficult, give this user props!)</small>
|
|
|
|
|
</app:avatar:achievement>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<achievement: nonvoid>
|
|
|
|
|
{#if @unlocked}
|
|
|
|
|
<div class='achievement {{@classes}}'></div>{@content}
|
|
|
|
|
<hr/>
|
|
|
|
|
{else if @unlockable} <!-- only show silhouettes on own tab -->
|
|
|
|
|
{{#if equal(_user.id,@profile.id)}}
|
|
|
|
|
<span class='muted'>
|
|
|
|
|
{@content}
|
|
|
|
|
</span>
|
2013-05-04 13:24:37 +00:00
|
|
|
<hr/>
|
|
|
|
|
{{/}}
|
2013-05-07 16:21:50 +00:00
|
|
|
{/}
|
2013-05-03 15:06:25 +00:00
|
|
|
|
2013-03-08 04:23:18 +00:00
|
|
|
|
|
|
|
|
<inventory:>
|
2013-03-23 01:37:48 +00:00
|
|
|
<!-- we'll have other inventory here later too, like enchantments, quest scrolls, etc -->
|
|
|
|
|
<app:pets:inventory/>
|
2013-03-09 20:34:48 +00:00
|
|
|
|