MongoosePeople. Places. Questionable inventions.

All help topics · Link to this topic

Showing help on 'combat-building'

Build real objects and give each its own description, aliases and integrate_room_msg; keep room prose for architecture.
Materials: call $material_engine:update_material_data(thing, record). Use components as a list of species/fraction maps, mass in kilograms, temperature in kelvin, and phase solid/liquid/gas.
Example record: [components -> {[species -> steel, fraction -> 1.0]}, mass -> 2.0, temperature -> 293.15, phase -> solid]; quote these string keys and values in MOO code.
Use known species from $material_engine.profiles. Positive thing.toughness overrides the material toughness; damage capacity is toughness times own mass.
Packet components contain joules by channel; tags and material factors weight damage without creating physical energy. ROM packets carry the rom tag and bypass generic armour layers in MUD rules.
Heat accumulates against mass times melt_j_kg/vapor_j_kg and changes phase; a small heat deposit is not instant destruction.
Destroyed things may become debris; players, creatures, bolted/fixed/structural things, parents with children, and debris itself are not replaced.
Sounds: @sounds THING lists hooks; @sound THING hit_snd opens catalog selection. Store catalog IDs or variation groups in _snd properties and resolve through $sh:resolve_ref; keep filenames out of code.
Armour: give a thing material first, then type @armour THING covers torso,arms layer armour. @armour THING displays its protection.
Coverage names: torso back head legs arms feet hands neck waist wrist. Layers, inner to outer: skin clothing padding armour shell outer.
configure_armour computes coverage and coverage_area_m2 from those locations. layer_rank orders protection; the clothing layer number breaks ties. Legacy wear slots still provide coverage.
A sealed suit needs worn sealing pieces covering every location, each linked by suit_pack to the worn pack. envelope_leak uses the worst piece leak; any uncovered location leaks fully.
Partial leaks spend oxygen faster. A fully breached piece loses the sealed envelope. Pack o2_kg, gas_volume_m3, setpoint_pa and o2_use_kg_s govern its air.
Powered armour needs powered_armour, power_draw_w and a charged power_cell inside its worn pack. powered_mass supports linked worn pieces; encumbrance subtracts that mass from cargo.
Weapons: create a child of $weapon, give it material, weapon_class, weapon_mode, weapon_skill, channel, tags, carrier and the swing/hit/miss sound hooks.
Melee uses swing_speed_m_s, energy_per_stroke_j and cycle_s. Projectiles use projectile_mass_kg, launch_speed_m_s and pellet_count. Energy weapons use energy_per_shot_j.
Ranged weapons also need fire_snd/reload_snd/empty_snd and ammo_kind. loaded must point to a compatible $ammo_magazine or $power_cell actually inside the weapon; magazines hold rounds, cells hold joules.
setting_names/change_setting select supported settings, including stun where supplied; shot_energy_j and setting_packet use the current setting.
Traditions: create a child of $tradition. Set unit_name, joules_per_unit, default_capacity_j, default_refill_w, efficiency, carrier, invocations and uses_reservoir. grant(who) installs that reservoir.
Abilities: create a child of $ability, set name/aliases/description, tradition, skill, target_kind, hostile/self_ok, cost_j, scalable, lag_seconds, channel/tags/carrier, enabled, messages and cast/impact/fail sounds; then $abilities:register(ability).
player_listed controls normal listings; authored_voice preserves deliberate messages during import. ROM identity/class, minimum level, nominal_mana and joules_per_unit live in the ability.rom map.
The tradition converts reservoir joules to displayed units. ROM nominal mana is distinct from packet energy: failed checks pay half, ROM dice may require extra mana, and total delivery never exceeds actual reservoir joules drawn times tradition efficiency.
Hostile powers aim at your opponent. With no opponent, a power that permits self targeting uses you; otherwise it asks: Cast that at whom? Explicit targets override defaults. Text targets stay text; world targets use world_target.
Wizard-only configure/register/grant and configure_armour helpers require wizard callers; material writeback follows the target API. Ordinary players use cast/feel/channel/focus/perform, wield/shoot/reload and item commands; ownership controls builder commands.