
Every competition obviously needs some sets of rules . These rules are n't meant to give some personal advantage to me or my company but some things must be clear beforehand . 1. Entrants can make any race they choose ( not neccessarily a current Hasslefree race , be creative ) , giving it any equipment they like in any pose they desire ... . . so long as it 's 28mm scale ( not neccessarily 28mm tall ) castable and has a basing tag that fits in to a 30mm or 40mm round edged base ( as used by Warmachine and Dark Age ) . The sculpt should ideally be made of an epoxy suitable for vulcanising like green stuff . 2. Using pieces of existing Hasslefree Miniatures is not allowed , other than those from heads and weapon sprues ( head sprues will be available in September ) . 3. Secrecy is not an issue . You can put your WIPs all over the net if you like , so long as you do n't mind people nicking your ideas . 4. We will create categories depending on the entries we receive . Initial judging will be by public vote to determine the top entries . Sally and I and a panel of judges ( who will not be allowed to vote for any entries they make ) will then choose the over all winner . 5. The start date is today , Monday the 15th of August . Since we do n't want to panic anybody there 's no real rush to get your entries completed , the date for all entries to be with me is Jen 's Birthday , December 18th . If it 's still the 18th of December anywhere in the world you can email me your entry . Your pictures need to be sent to kevinjameswhite@totalise . c o. u k . Please send JPEG files compressed to ' best ' quality ( 80-90 % ) and try to make sure your pics are no larger than 150Kb each . 6. The practicality of making the miniature will be judged alongside its degree of craftsmanship . If it 's a bugger to cast or if I 'm going to have to chop it up and put bits on sprues it might lose a few points . 7. Results will be posted on our 2nd anniversary , 7th of January 2006 . 8. The winner will receive a prize and a small amount of fame/notoriety . There is a prize of £ 175 in cold hard cash . I will also make sure that the winner is recognised as the sculptor of the piece where at all possible and also sculpt their name on the back of the basing tag . 9. Entries will need to be original works of art - no copyrighted ideas please , other than recognised Hasslefree IP . Remember a 3D copy of a 2D original is still a violation of copyright , unless the original art is in the public domain or you have received ( written ) permission from the artist . 10 . Age Limit . Since the aim is to cast and sell these figures , contestants must be 18 years or older . If the contestant is under 18 , he or she must be able to produce written parental consent upon demand . 11 . Rule Amendments . Rules are subject to change and/or clarifications without notice , as per the decision of Kev and Sally . Entry categories may be subject to alteration depending on the level of response for each and existing categories may be split or combined . Final category placement of all entries shall be determined by the judges . 12 . Should the number and quality of submissions exceed expectations , we reserve the right to choose exclusively to purchase entries that do n't receive first place for a fee to be agreed upon between us and the Sculptor on an individual basis . No runners up prize offer will be greater than £ 175 and will depend entirely on our finances at the time . In this event all submissions so recognized will be subject to the same conditions as the over all winner . 13 . Should we not be able to agree on a price , the sculptor is free to dispose of the miniature at their discretion unless it contains recognisable components of existing Hasslefree Miniatures or Intellectual Property . Should this be the case , the miniature may not be sold to a party other than Hasslefree Miniatures . 14 . Fair Play . Only original sculpts will be accepted . By entering a figure in this contest you attest on your honour to be it 's creator and holder of all rights to this figure . By doing so you accept all legal consequences that could arise should the figure or the rights to it be part of someone else 's Intellectual Property . Also you will exonerate Hasslefree Miniatures for any legal claims that could result from entering the competition . 15 . Risk Attribution . Hasslefree Miniatures can not take responsibility for winning submissions lost in the mail , the risk lies with the sculptor . The sculptor must be willing to submit his/her sculpt to the mouldmaker 's ministrations . As such , he or she should be aware that a lot of pressure will be exerted on the green during the mouldmaking process . A piece of putty will survive this moulding process in direct relationship to the amount of care and skill used to make the original . 16 . Figure Reproduction . As described in the introduction , castings of the winning entries will be sold by Hasslefree Miniatures as part of our HFP range . To this intent , the sculptor agrees to turn over the rights to reproduce , distribute and display the figure exclusively to Hasslefree under the terms and conditions as specified above . The sculptor will receive 10 copies of the mini and he or she may of course use the IP rights of the green and the mini for personal use . 