- v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
- Use this page to report any issues related to the migration.
Divine equipment
This article was migrated from DF2014:Divine equipment and may be inaccurate for the current version of DF (v51.13). See this page for more information. |
v51.13 · v0.47.05 This article is about the current version of DF.Note that some content may still need to be updated. |
![]() |
This article contains massive spoilers. If you do not wish to have your game experience spoiled, do not scroll down! |
Divine equipment is a catch-all term for special, procedurally-generated weapons, armor, and clothing that can be found in vaults as well as deep underground. Divine equipment is used by angels, who ruthlessly protect the vault's priceless treasures. Divine equipment is usually made from divine metals and divine fabrics.
In fortress mode, divine equipment can be found on the lowest z levels, a few levels above the magma sea. A message "You have discovered an unusual volcanic wall studded with gems" will appear, pinpointing it's location once the magma sea has been discovered. These gem clusters contain two kinds of divine equipment, "Treasure of the gods", which are artifacts created with divine materials, and the divine equipment of angels that reside in these gem clusters. Their main difference is that angel equipment can be melted and repurposed for specific items, such as a monarch's throne.
Traits[edit]
Each vault entity generates a set of equipment: weapons, shields, clothing and armor. Each item is based on a default item; adding an adjective ("bulging", "bulky", "segmented", etc.) and potentially a new name ("blade", "nail"). Dwarves in strange moods may produce one of these procedurally-generated items as they would any other foreign item of that type. Divine equipment subtypes are generally equivalent in stats to standard items, with their advantages coming from either artifact quality or exceptional materials.
This feature has one or more outstanding bugs. Please view the Bugs section for details. |
Because divine equipment is procedurally generated, it does not have a consistent ID and cannot normally be assigned graphics.Bug:13074
Adjectives[edit]
- asymmetrical
- bell-shaped
- bent
- blocky
- branching
- bulging
- bulky
- cone-headed
- crescent
- curved
- double-tipped
- frilly
- intricate
- jagged
- large-headed
- long
- pointed
- rectangular
- rounded
- segmented
- sheer
- sleek
- split
- square
- tall
- tapered
- thin
- wavy
- wide-headed
[show][Select all] |
---|
angel_item_info={
armor={
pants={
gen={},
adj={
"blocky",
"rounded",
"thin",
"jagged"
}
},
armor={
gen={},
adj={
"bulging",
"square",
"segmented",
"jagged"
}
},
helm={
gen={},
adj={
"conical",
"rounded",
"tall",
"jagged"
}
},
gloves={
gen={},
adj={
"bulky",
"intricate",
"thin",
"jagged"
}
},
shoes={
gen={},
adj={
"blocky",
"sleek",
"intricate",
"jagged"
}
},
},
clothing={
pants={
gen={},
adj={
"split",
"frilly",
"sheer",
"bell-shaped"
}
},
armor={
gen={},
adj={
"frilly",
"sleek",
"bulky",
"asymmetrical",
}
},
helm={
gen={},
adj={
"frilly",
"sleek",
"bulky",
}
},
gloves={
gen={},
adj={
"bulky",
"sleek",
"frilly",
}
},
shoes={
gen={},
adj={
"frilly",
"sheer",
"bulky",
}
},
},
weapon={
PIKE={
gen={},
adj={
"curved",
"wavy",
"jagged",
"thin"
}
},
WHIP={
gen={},
adj={
"bulky",
"branching",
"thin",
"long",
}
},
BOW={
gen={},
adj={
"pointed",
"tall",
"jagged",
"thin",
}
},
BLOWGUN={
gen={},
adj={
"curved",
"wavy",
"jagged",
"thin"
}
},
AXE={
gen={},
adj={
"crescent",
"jagged",
"thin",
}
},
SWORD={
gen={},
adj={
"curved",
"wavy",
"jagged",
"thin"
}
},
DAGGER={
gen={},
adj={
"curved",
"twisted",
"jagged",
"thin",
}
},
MACE={
gen={},
adj={
"bent",
"tall",
"jagged",
"thin",
}
},
HAMMER={
gen={},
adj={
"curved",
"large-headed",
"jagged",
"thin",
}
},
SPEAR={
gen={},
adj={
"thick",
"wavy",
"jagged",
"thin",
}
},
CROSSBOW={
gen={},
adj={
"sleek",
"long",
"jagged",
"bulky",
}
},
},
ammo={
ARROW={},
BLOWDART={},
BOLT={}
},
shield={
gen={},
adj={
"curved",
"square",
"tall",
"rectangular"
}
}
}
angel_item_info.armor.pants.gen.greaves=function()
local lines={}
-- some more variety-causing way to generate these?
lines[#lines+1]="[NAME:greaves:greaves]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.armor.pants.adj).."]"
lines[#lines+1]="[ARMORLEVEL:3]"
lines[#lines+1]="[LBSTEP:MAX]"
lines[#lines+1]="[SHAPED]"
lines[#lines+1]="[LAYER:ARMOR]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:15]"
lines[#lines+1]="[LAYER_PERMIT:30]"
lines[#lines+1]="[MATERIAL_SIZE:6]"
lines[#lines+1]="[METAL]"
lines[#lines+1]="[BARRED]"
lines[#lines+1]="[HARD]"
return {item=lines,weight=1}
end
angel_item_info.clothing.pants.gen.skirt=function()
local lines={}
lines[#lines+1]="[NAME:skirt:skirts]"
lines[#lines+1]="[LBSTEP:1]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
return {item=lines,weight=1}
end
angel_item_info.armor.armor.gen.breastplate=function()
local lines={}
lines[#lines+1]="[NAME:breastplate:breastplates]"
lines[#lines+1]="[ARMORLEVEL:3]"
lines[#lines+1]="[UBSTEP:0]"
lines[#lines+1]="[LBSTEP:0]"
lines[#lines+1]="[SHAPED]"
lines[#lines+1]="[LAYER:ARMOR]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:50]"
lines[#lines+1]="[MATERIAL_SIZE:9]"
return {item=lines,weight=1}
end
-- out into its own file?
angel_item_info.clothing.armor.gen.coat=function()
local lines={}
lines[#lines+1]="[NAME:coat:coats]"
lines[#lines+1]="[UBSTEP:MAX]"
lines[#lines+1]="[LBSTEP:1]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:50]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.shirt=function()
local lines={}
lines[#lines+1]="[NAME:shirt:shirts]"
lines[#lines+1]="[UBSTEP:MAX]"
lines[#lines+1]="[LBSTEP:0]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:50]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.cloak=function()
local lines={}
lines[#lines+1]="[NAME:cloak:cloaks]"
lines[#lines+1]="[UBSTEP:MAX]"
lines[#lines+1]="[LBSTEP:1]"
lines[#lines+1]="[LAYER:COVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:15]"
lines[#lines+1]="[LAYER_PERMIT:150]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.tunic=function()
local lines={}
lines[#lines+1]="[NAME:tunic:tunics]"
lines[#lines+1]="[UBSTEP:0]"
lines[#lines+1]="[LBSTEP:1]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:50]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.toga=function()
local lines={}
lines[#lines+1]="[NAME:toga:togas]"
lines[#lines+1]="[UBSTEP:1]"
lines[#lines+1]="[LBSTEP:1]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:30]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.cape=function()
local lines={}
lines[#lines+1]="[NAME:cape:capes]"
lines[#lines+1]="[UBSTEP:0]"
lines[#lines+1]="[LBSTEP:0]"
lines[#lines+1]="[LAYER:COVER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:300]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.vest=function()
local lines={}
lines[#lines+1]="[NAME:vest:vests]"
lines[#lines+1]="[UBSTEP:0]"
lines[#lines+1]="[LBSTEP:0]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:50]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.dress=function()
local lines={}
lines[#lines+1]="[NAME:dress:dresses]"
lines[#lines+1]="[UBSTEP:MAX]"
lines[#lines+1]="[LBSTEP:MAX]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:50]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.armor.gen.robe=function()
local lines={}
lines[#lines+1]="[NAME:robe:robes]"
lines[#lines+1]="[UBSTEP:MAX]"
lines[#lines+1]="[LBSTEP:MAX]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:6]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.armor.helm.gen.helm=function()
local lines={}
lines[#lines+1]="[NAME:helm:helms]"
lines[#lines+1]="[ARMORLEVEL:1]"
lines[#lines+1]="[METAL_ARMOR_LEVELS]"
lines[#lines+1]="[SHAPED]"
lines[#lines+1]="[LAYER:ARMOR]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:30]"
lines[#lines+1]="[LAYER_PERMIT:20]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[BARRED]"
lines[#lines+1]="[SCALED]"
lines[#lines+1]="[LEATHER]"
lines[#lines+1]="[SHAPED]"
return {item=lines,weight=1}
end
angel_item_info.armor.helm.gen.cap=function()
local lines={}
lines[#lines+1]="[NAME:cap:caps]"
lines[#lines+1]="[METAL_ARMOR_LEVELS]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[LEATHER]"
lines[#lines+1]="[HARD]"
lines[#lines+1]="[METAL]"
lines[#lines+1]="[SHAPED]"
return {item=lines,weight=1}
end
angel_item_info.clothing.helm.gen.hood=function()
local lines={}
lines[#lines+1]="[NAME:hood:hoods]"
lines[#lines+1]="[LAYER:COVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.helm.gen.turban=function()
local lines={}
lines[#lines+1]="[NAME:turban:turbans]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.helm.gen.mask=function()
local lines={}
lines[#lines+1]="[NAME:mask:masks]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:10]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
lines[#lines+1]="[HARD]"
lines[#lines+1]="[METAL]"
lines[#lines+1]="[BARRED]"
lines[#lines+1]="[SCALED]"
lines[#lines+1]="[SHAPED]"
return {item=lines,weight=1}
end
angel_item_info.clothing.helm.gen.veil_head=function()
local lines={}
lines[#lines+1]="[NAME:head veil:head veils]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.helm.gen.veil_face=function()
local lines={}
lines[#lines+1]="[NAME:face veil:face veils]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.helm.gen.headscarf=function()
local lines={}
lines[#lines+1]="[NAME:headscarf:headscarves]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:50]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:100]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.armor.gloves.gen.gauntlet=function()
local lines={}
lines[#lines+1]="[NAME:gauntlet:gauntlets]"
lines[#lines+1]="[ARMORLEVEL:2]"
lines[#lines+1]="[UPSTEP:1]"
lines[#lines+1]="[SHAPED]"
lines[#lines+1]="[LAYER:ARMOR]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[SCALED]"
lines[#lines+1]="[BARRED]"
return {item=lines,weight=1}
end
angel_item_info.clothing.gloves.gen.glove=function()
local lines={}
lines[#lines+1]="[NAME:glove:gloves]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:10]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.gloves.gen.mitten=function()
local lines={}
lines[#lines+1]="[NAME:mitten:mittens]"
lines[#lines+1]="[LAYER:COVER]"
lines[#lines+1]="[COVERAGE:150]"
lines[#lines+1]="[LAYER_SIZE:15]"
lines[#lines+1]="[LAYER_PERMIT:20]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.armor.shoes.gen.boots_high=function()
local lines={}
lines[#lines+1]="[NAME:high boot:high boots]"
lines[#lines+1]="[ARMORLEVEL:1]"
lines[#lines+1]="[UPSTEP:1]"
lines[#lines+1]="[METAL_ARMOR_LEVELS]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:25]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.armor.shoes.gen.boots_low=function()
local lines={}
lines[#lines+1]="[NAME:low boot:low boots]"
lines[#lines+1]="[ARMORLEVEL:1]"
lines[#lines+1]="[METAL_ARMOR_LEVELS]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:25]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.shoes.gen.shoes=function()
local lines={}
lines[#lines+1]="[NAME:shoe:shoes]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:20]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.shoes.gen.sandals=function()
local lines={}
lines[#lines+1]="[NAME:sandal:sandals]"
lines[#lines+1]="[LAYER:OVER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:25]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.shoes.gen.chausses=function()
local lines={}
lines[#lines+1]="[NAME:chausse:chausses]"
lines[#lines+1]="[UPSTEP:MAX]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[LEATHER]"
return {item=lines,weight=1}
end
angel_item_info.clothing.shoes.gen.socks=function()
local lines={}
lines[#lines+1]="[NAME:sock:socks]"
lines[#lines+1]="[LAYER:UNDER]"
lines[#lines+1]="[COVERAGE:100]"
lines[#lines+1]="[LAYER_SIZE:10]"
lines[#lines+1]="[LAYER_PERMIT:15]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
return {item=lines,weight=1}
end
local function make_sword_func(name)
return function()
local lines={}
lines[#lines+1]="[NAME:"..name.."]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.SWORD.adj).."]"
lines[#lines+1]="[SIZE:300]"
lines[#lines+1]="[SKILL:SWORD]"
lines[#lines+1]="[TWO_HANDED:37500]"
lines[#lines+1]="[MINIMUM_SIZE:32500]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[ATTACK:EDGE:20000:4000:slash:slashes:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:EDGE:50:2000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:20000:4000:slap:slaps:flat:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:100:1000:strike:strikes:pommel:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
end
angel_item_info.weapon.SWORD.gen.sword=make_sword_func("sword:swords")
angel_item_info.weapon.SWORD.gen.blade=make_sword_func("blade:blades")
angel_item_info.weapon.PIKE.gen.pike=function()
local lines={}
lines[#lines+1]="[NAME:pike:pikes]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.PIKE.adj).."]"
lines[#lines+1]="[SIZE:800]"
lines[#lines+1]="[SKILL:PIKE]"
lines[#lines+1]="[TWO_HANDED:77500]"
lines[#lines+1]="[MINIMUM_SIZE:62500]"
lines[#lines+1]="[MATERIAL_SIZE:4]"
lines[#lines+1]="[ATTACK:EDGE:20:12000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:10000:6000:bash:bashes:shaft:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
local function make_whip_func(name)
return function()
local lines={}
lines[#lines+1]="[NAME:"..name.."]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.WHIP.adj).."]"
lines[#lines+1]="[SIZE:300]"
lines[#lines+1]="[SKILL:WHIP]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:22500]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:BLUNT:1:10:lash:lashes:NO_SUB:5000]"
lines[#lines+1]="[ATTACK_PREPARE_AND_RECOVER:4:4]"
lines[#lines+1]="[ATTACK_FLAG_BAD_MULTIATTACK]"
return {item=lines,weight=1}
end
end
angel_item_info.weapon.WHIP.gen.whip=make_whip_func("whip:whips")
angel_item_info.weapon.WHIP.gen.lash=make_whip_func("lash:lashes")
angel_item_info.weapon.WHIP.gen.scourge=function()
local lines={}
lines[#lines+1]="[NAME:scourge:scourges]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.WHIP.adj).."]"
lines[#lines+1]="[SIZE:300]"
lines[#lines+1]="[SKILL:WHIP]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:22500]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:EDGE:10:50:lash:lashes:NO_SUB:2000]"
lines[#lines+1]="[ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK_FLAG_BAD_MULTIATTACK]"
return {item=lines,weight=1}
end
-- if you want your angels to use a totally different kind of arrow, you're totally allowed to do that,
-- which is why there's this whole arrow table
angel_item_info.ammo.ARROW.thin=function()
local lines={}
lines[#lines+1]="[NAME:arrow:arrows]"
lines[#lines+1]="[ADJECTIVE:thin]"
lines[#lines+1]="[CLASS:ARROW]"
lines[#lines+1]="[SIZE:150]"
lines[#lines+1]="[ATTACK:EDGE:4:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.ARROW.jagged=function()
local lines={}
lines[#lines+1]="[NAME:arrow:arrows]"
lines[#lines+1]="[ADJECTIVE:jagged]"
lines[#lines+1]="[CLASS:ARROW]"
lines[#lines+1]="[SIZE:150]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.ARROW.wide_headed=function()
local lines={}
lines[#lines+1]="[NAME:arrow:arrows]"
lines[#lines+1]="[ADJECTIVE:wide-headed]"
lines[#lines+1]="[CLASS:ARROW]"
lines[#lines+1]="[SIZE:150]"
lines[#lines+1]="[ATTACK:EDGE:100:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.ARROW.cone_headed=function()
local lines={}
lines[#lines+1]="[NAME:arrow:arrows]"
lines[#lines+1]="[ADJECTIVE:cone-headed]"
lines[#lines+1]="[CLASS:ARROW]"
lines[#lines+1]="[SIZE:175]"
lines[#lines+1]="[ATTACK:EDGE:50:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.weapon.BOW.gen.bow=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:bow:bows]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.BOW.adj).."]"
lines[#lines+1]="[SIZE:300]"
lines[#lines+1]="[SKILL:SWORD]"
lines[#lines+1]="[RANGED:BOW:ARROW]"
lines[#lines+1]="[SHOOT_FORCE:1000]"
lines[#lines+1]="[SHOOT_MAXVEL:200]"
lines[#lines+1]="[TWO_HANDED:0]"
lines[#lines+1]="[MINIMUM_SIZE:15000]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[ATTACK:BLUNT:10000:4000:bash:bashes:NO_SUB:1250]"
lines[#lines+1]="[ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ITEM_AMMO:"..prefix.."WP_A"..tostring(i).."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.ammo.ARROW).item)
return {item=lines,weight=1}
end
angel_item_info.ammo.BOLT.short=function()
local lines={}
lines[#lines+1]="[NAME:bolt:bolts]"
lines[#lines+1]="[ADJECTIVE:short]"
lines[#lines+1]="[CLASS:BOLT]"
lines[#lines+1]="[SIZE:125]"
lines[#lines+1]="[ATTACK:EDGE:5:500:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.BOLT.long=function()
local lines={}
lines[#lines+1]="[NAME:bolt:bolts]"
lines[#lines+1]="[ADJECTIVE:long]"
lines[#lines+1]="[CLASS:BOLT]"
lines[#lines+1]="[SIZE:175]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.BOLT.jagged=function()
local lines={}
lines[#lines+1]="[NAME:bolt:bolts]"
lines[#lines+1]="[ADJECTIVE:jagged]"
lines[#lines+1]="[CLASS:BOLT]"
lines[#lines+1]="[SIZE:150]"
lines[#lines+1]="[ATTACK:EDGE:10:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.BOLT.thin=function()
local lines={}
lines[#lines+1]="[NAME:bolt:bolts]"
lines[#lines+1]="[ADJECTIVE:thin]"
lines[#lines+1]="[CLASS:BOLT]"
lines[#lines+1]="[SIZE:150]"
lines[#lines+1]="[ATTACK:EDGE:3:1500:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.weapon.CROSSBOW.gen.crossbow=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:crossbow:crossbows]"
lines[#lines+1]="[SIZE:400]"
lines[#lines+1]="[SKILL:HAMMER]"
lines[#lines+1]="[RANGED:CROSSBOW:BOLT]"
lines[#lines+1]="[SHOOT_FORCE:1000]"
lines[#lines+1]="[SHOOT_MAXVEL:200]"
lines[#lines+1]="[TWO_HANDED:0]"
lines[#lines+1]="[MINIMUM_SIZE:15000]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[ATTACK:BLUNT:10000:4000:bash:bashes:NO_SUB:1250]"
lines[#lines+1]="[ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ITEM_AMMO:"..prefix.."WP_A"..tostring(i).."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.ammo.BOLT).item)
return {item=lines,weight=1}
end
angel_item_info.ammo.BLOWDART.narrow=function()
local lines={}
lines[#lines+1]="[NAME:blowdart:blowdarts]"
lines[#lines+1]="[ADJECTIVE:narrow]"
lines[#lines+1]="[CLASS:BLOWDART]"
lines[#lines+1]="[SIZE:20]"
lines[#lines+1]="[ATTACK:EDGE:1:50:stick:sticks:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.BLOWDART.thick=function()
local lines={}
lines[#lines+1]="[NAME:blowdart:blowdarts]"
lines[#lines+1]="[ADJECTIVE:thick]"
lines[#lines+1]="[CLASS:BLOWDART]"
lines[#lines+1]="[SIZE:40]"
lines[#lines+1]="[ATTACK:EDGE:2:50:stick:sticks:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.BLOWDART.tapered=function()
local lines={}
lines[#lines+1]="[NAME:blowdart:blowdarts]"
lines[#lines+1]="[ADJECTIVE:narrow]"
lines[#lines+1]="[CLASS:BLOWDART]"
lines[#lines+1]="[SIZE:30]"
lines[#lines+1]="[ATTACK:EDGE:1:50:stick:sticks:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.ammo.BLOWDART.double=function()
local lines={}
lines[#lines+1]="[NAME:blowdart:blowdarts]"
lines[#lines+1]="[ADJECTIVE:double-tipped]"
lines[#lines+1]="[CLASS:BLOWDART]"
lines[#lines+1]="[SIZE:25]"
lines[#lines+1]="[ATTACK:EDGE:2:50:stick:sticks:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
return {item=lines,weight=1}
end
angel_item_info.weapon.BLOWGUN.gen.blowgun=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:blowgun:blowguns]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.BOW.adj).."]"
lines[#lines+1]="[SIZE:150]"
lines[#lines+1]="[SKILL:SWORD]"
lines[#lines+1]="[RANGED:BLOWGUN:BLOWDART]"
lines[#lines+1]="[SHOOT_FORCE:100]"
lines[#lines+1]="[SHOOT_MAXVEL:1000]"
lines[#lines+1]="[TWO_HANDED:0]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:2]"
lines[#lines+1]="[ATTACK:BLUNT:10000:4000:bash:bashes:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ITEM_AMMO:"..prefix.."WP_A"..tostring(i).."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.ammo.BLOWDART).item)
return {item=lines,weight=1}
end
angel_item_info.weapon.AXE.gen.battle=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:battle axe:battle axes]"
lines[#lines+1]="[SIZE:800]"
lines[#lines+1]="[SKILL:AXE]"
lines[#lines+1]="[TWO_HANDED:47500]"
lines[#lines+1]="[MINIMUM_SIZE:42500]"
lines[#lines+1]="[MATERIAL_SIZE:4]"
lines[#lines+1]="[ATTACK:EDGE:40000:6000:hack:hacks:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:40000:6000:slap:slaps:flat:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:100:1000:strike:strikes:pommel:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.AXE.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.AXE.gen.halberd=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:halberd:halberds]"
lines[#lines+1]="[SIZE:1200]"
lines[#lines+1]="[SKILL:AXE]"
lines[#lines+1]="[TWO_HANDED:77500]"
lines[#lines+1]="[MINIMUM_SIZE:62500]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[ATTACK:EDGE:20000:8000:slash:slashes:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:EDGE:50:2000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:20000:6000:bash:bashes:shaft:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.AXE.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.AXE.gen.great=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:great axe:great axes]"
lines[#lines+1]="[SIZE:1300]"
lines[#lines+1]="[SKILL:AXE]"
lines[#lines+1]="[TWO_HANDED:77500]"
lines[#lines+1]="[MINIMUM_SIZE:62500]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[ATTACK:EDGE:60000:8000:hack:hacks:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:60000:8000:slap:slaps:flat:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:100:1000:strike:strikes:pommel:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.AXE.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.DAGGER.gen.dagger=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:dagger:daggers]"
lines[#lines+1]="[SIZE:200]"
lines[#lines+1]="[SKILL:DAGGER]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:EDGE:1000:800:slash:slashes:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:20:600:strike:strikes:pommel:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.DAGGER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.DAGGER.gen.knife=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:knife:knives]"
lines[#lines+1]="[SIZE:200]"
lines[#lines+1]="[SKILL:DAGGER]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:EDGE:1000:800:slash:slashes:NO_SUB:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.DAGGER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.DAGGER.gen.nail=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:nail:nails]"
lines[#lines+1]="[SIZE:200]"
lines[#lines+1]="[SKILL:DAGGER]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.DAGGER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.DAGGER.gen.spike=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:spike:spikes]"
lines[#lines+1]="[SIZE:200]"
lines[#lines+1]="[SKILL:DAGGER]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.DAGGER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.DAGGER.gen.prong=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:prong:prongs]"
lines[#lines+1]="[SIZE:200]"
lines[#lines+1]="[SKILL:DAGGER]"
lines[#lines+1]="[TWO_HANDED:27500]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:1]"
lines[#lines+1]="[ATTACK:EDGE:5:1000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.DAGGER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.MACE.gen.mace=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:mace:maces]"
lines[#lines+1]="[SIZE:800]"
lines[#lines+1]="[SKILL:MACE]"
lines[#lines+1]="[TWO_HANDED:37500]"
lines[#lines+1]="[MINIMUM_SIZE:32500]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[ATTACK:BLUNT:20:200:bash:bashes:NO_SUB:2000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.MACE.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.HAMMER.gen.war_hammer=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:war hammer:war hammers]"
lines[#lines+1]="[SIZE:400]"
lines[#lines+1]="[SKILL:HAMMER]"
lines[#lines+1]="[TWO_HANDED:37500]"
lines[#lines+1]="[MINIMUM_SIZE:32500]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[ATTACK:BLUNT:10:200:bash:bashes:NO_SUB:2000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.HAMMER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.HAMMER.gen.maul=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:maul:mauls]"
lines[#lines+1]="[SIZE:1300]"
lines[#lines+1]="[SKILL:HAMMER]"
lines[#lines+1]="[TWO_HANDED:77500]"
lines[#lines+1]="[MINIMUM_SIZE:62500]"
lines[#lines+1]="[MATERIAL_SIZE:5]"
lines[#lines+1]="[ATTACK:BLUNT:100:6000:bash:bashes:NO_SUB:2000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.HAMMER.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.weapon.SPEAR.gen.spear=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:spear:spears]"
lines[#lines+1]="[SIZE:400]"
lines[#lines+1]="[SKILL:SPEAR]"
lines[#lines+1]="[TWO_HANDED:47500]"
lines[#lines+1]="[MINIMUM_SIZE:5000]"
lines[#lines+1]="[MATERIAL_SIZE:3]"
lines[#lines+1]="[ATTACK:EDGE:20:10000:stab:stabs:NO_SUB:1000]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ATTACK:BLUNT:10000:6000:bash:bashes:shaft:1250]"
lines[#lines+1]=" [ATTACK_PREPARE_AND_RECOVER:3:3]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.weapon.SPEAR.adj).."]"
return {item=lines,weight=1}
end
angel_item_info.shield.gen.shield=function(i,prefix)
local lines={}
lines[#lines+1]="[NAME:shield:shields]"
lines[#lines+1]="[ARMORLEVEL:2]"
lines[#lines+1]="[BLOCKCHANCE:20]"
lines[#lines+1]="[UPSTEP:2]"
lines[#lines+1]="[MATERIAL_SIZE:4]"
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.shield.adj).."]"
return {item=lines,weight=1}
end
angel_item_gens={}
angel_item_gens.default=function(prefix,tokens)
local weapon_num=5
local shield_num=1
local a_pants_num=1
local c_pants_num=1
local a_armor_num=1
local c_armor_num=1
local a_helm_num=1
local c_helm_num=1
local a_gloves_num=1
local c_gloves_num=1
local a_shoes_num=1
local c_shoes_num=1
local lines={}
local tokens={
WEAPON={},
AMMO={},
SHIELD={},
ARMOR={},
HELM={},
GLOVES={},
SHOES={},
PANTS={}
}
for i=1,a_pants_num do
local tok=prefix.."APN"..tostring(i)
tokens.PANTS[#tokens.PANTS+1]=tok
lines[#lines+1]="[ITEM_PANTS:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.armor.pants.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.armor.pants.adj).."]"
lines[#lines+1]="[METAL]"
lines[#lines+1]="[HARD]"
end
for i=1,c_pants_num do
local tok=prefix.."CPN"..tostring(i)
tokens.PANTS[#tokens.PANTS+1]=tok
lines[#lines+1]="[ITEM_PANTS:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.clothing.pants.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.clothing.pants.adj).."]"
lines[#lines+1]="[SOFT]"
lines[#lines+1]="[STRUCTURAL_ELASTICITY_WOVEN_THREAD]"
end
for i=1,a_armor_num do
local tok=prefix.."AAR"..tostring(i)
tokens.ARMOR[#tokens.ARMOR+1]=tok
lines[#lines+1]="[ITEM_ARMOR:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.armor.armor.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.armor.armor.adj).."]"
lines[#lines+1]="[HARD]"
lines[#lines+1]="[METAL]"
end
for i=1,c_armor_num do
local tok=prefix.."CAR"..tostring(i)
tokens.ARMOR[#tokens.ARMOR+1]=tok
lines[#lines+1]="[ITEM_ARMOR:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.clothing.armor.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.clothing.armor.adj).."]"
lines[#lines+1]="[SOFT]"
lines[#lines+1]="[STRUCTURAL_ELASTICITY_WOVEN_THREAD]"
end
for i=1,a_helm_num do
local tok=prefix.."AHM"..tostring(i)
tokens.HELM[#tokens.HELM+1]=tok
lines[#lines+1]="[ITEM_HELM:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.armor.helm.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.armor.helm.adj).."]"
lines[#lines+1]="[HARD]"
lines[#lines+1]="[METAL]"
end
for i=1,c_helm_num do
local tok=prefix.."CHM"..tostring(i)
tokens.HELM[#tokens.HELM+1]=tok
lines[#lines+1]="[ITEM_HELM:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.clothing.helm.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.clothing.helm.adj).."]"
lines[#lines+1]="[SOFT]"
lines[#lines+1]="[STRUCTURAL_ELASTICITY_WOVEN_THREAD]"
end
for i=1,a_gloves_num do
local tok=prefix.."AGL"..tostring(i)
tokens.GLOVES[#tokens.GLOVES+1]=tok
lines[#lines+1]="[ITEM_GLOVES:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.armor.gloves.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.armor.gloves.adj).."]"
lines[#lines+1]="[METAL]"
lines[#lines+1]="[HARD]"
end
for i=1,c_gloves_num do
local tok=prefix.."CGL"..tostring(i)
tokens.GLOVES[#tokens.GLOVES+1]=tok
lines[#lines+1]="[ITEM_GLOVES:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.clothing.gloves.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.clothing.gloves.adj).."]"
lines[#lines+1]="[SOFT]"
lines[#lines+1]="[STRUCTURAL_ELASTICITY_WOVEN_THREAD]"
end
for i=1,a_shoes_num do
local tok=prefix.."ASH"..tostring(i)
tokens.SHOES[#tokens.SHOES+1]=tok
lines[#lines+1]="[ITEM_SHOES:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.armor.shoes.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.armor.shoes.adj).."]"
lines[#lines+1]="[METAL]"
lines[#lines+1]="[HARD]"
end
for i=1,c_shoes_num do
local tok=prefix.."CSH"..tostring(i)
tokens.SHOES[#tokens.SHOES+1]=tok
lines[#lines+1]="[ITEM_SHOES:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.clothing.shoes.gen,i,prefix).item)
lines[#lines+1]="[ADJECTIVE:"..pick_random(angel_item_info.clothing.shoes.adj).."]"
lines[#lines+1]="[SOFT]"
lines[#lines+1]="[STRUCTURAL_ELASTICITY_WOVEN_THREAD]"
end
local available_skills={
"PIKE",
"WHIP",
"BOW",
"BLOWGUN",
"AXE",
"SWORD",
"DAGGER",
"MACE",
"HAMMER",
"SPEAR",
"CROSSBOW"
}
for i=1,weapon_num do
local tok=prefix.."WP"..tostring(i)
tokens.WEAPON[#tokens.WEAPON+1]=tok
lines[#lines+1]="[ITEM_WEAPON:"..tok.."]"
add_generated_info(lines)
local skill=pick_random_no_replace(available_skills)
table_merge(lines,generate_from_list(angel_item_info.weapon[skill].gen,i,prefix).item)
end
for i=1,shield_num do
local tok=prefix.."SH"..tostring(i)
tokens.SHIELD[#tokens.SHIELD+1]=tok
lines[#lines+1]="[ITEM_SHIELD:"..tok.."]"
add_generated_info(lines)
table_merge(lines,generate_from_list(angel_item_info.shield.gen,i,prefix).item)
end
return {lines=lines,weight=1,tokens=tokens}
end
|