Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <interval.h>
- #include <item.h>
- #include <realtime.h>
- inherit "/std/item";
- inherit "/mod/effect/melange";
- #define Melange_Interval semirandom(300)
- nosave private descriptor attribute_mod;
- nosave private descriptor skill_mod;
- int melange_recharge() {
- object who = query_user();
- descriptor elem = who->query_vital_humour_element(Null);
- if(elem) {
- who->display(([
- Message_Content : ({
- 0, ({ "feel", 0 }), this_object(), "flooding",
- ({ 'r', 0,
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Index : elem,
- Description_Object : who,
- ])),
- }),
- "with",
- Description(([
- Description_Type : Description_Type_Subject_Known,
- Description_Index : "melange",
- Description_Content : "concentrated melange",
- ])),
- Description(([
- Description_Type : Description_Type_Subject_Unknown,
- Description_Index : "melange",
- Description_Content : "some strange substance",
- ])),
- }),
- Message_Senses : Message_Sense_Tactile,
- ]));
- who->message(([
- Message_Content : ({
- this_object(), ({ "quiver", this_object() }), "for a moment",
- }),
- Message_Senses : Message_Sense_Visual | Message_Sense_Tactile_For_Participants,
- ]));
- melange_consumed(who, this_object());
- return Melange_Interval;
- } else {
- who->display(([
- Message_Content : ({
- this_object(), ({ "cannot", this_object() }), "infuse", ({ 's', 0, "humourless body" }), "with melange",
- }),
- Message_Senses : Message_Sense_Tactile,
- ]));
- return Interval_Terminate;
- }
- }
- void glove_do_equip(mapping args) {
- object who = args["who"];
- attribute_mod = who->add_attribute_modifier(([
- Modifier_Index : ({
- Attr_Str,
- Attr_Con,
- Attr_Dex,
- }),
- Modifier_Amount : 25,
- Modifier_Add_Display : ([
- Message_Content : ({
- 'a', "feel", 'a', "subtle flow of energy pass",
- "into", 'v',
- }),
- Message_Senses : Message_Sense_Spiritual,
- ]),
- Modifier_Remove_Display : ([
- Message_Content : ({
- ({ 't', "flow" }), "of energy ceases to pulse within", 'v',
- }),
- Message_Senses : Message_Sense_Spiritual,
- ]),
- ]));
- skill_mod = who->add_skill_modifier(([
- Modifier_Index : ({
- Skill_Centering,
- Skill_Channeling,
- Skill_Concentration,
- Skill_Divination,
- Skill_Introspection,
- Skill_Quickness,
- }),
- Modifier_Amount : 40,
- Modifier_Add_Display : ([
- Message_Content : ({
- this_object(), "begins to squirm on", ({'u', 0 }), "hand;",
- "elongating, stretching, becoming thin, and quickly covering the entirety of",
- ({ 'u', 0 }), "hand",
- }),
- Message_Senses : Message_Sense_Visual,
- ]),
- Modifier_Remove_Display : ([
- Message_Content : ({
- this_object(), "begins to squirm and retract from", ({ 'u', 0 }), "hand as",
- ({ 'p', 0 }), "remove it",
- }),
- Message_Senses : Message_Sense_Visual,
- ]),
- ]));
- Interval_Set(#'melange_recharge, Melange_Interval);
- }
- void glove_do_unequip(mapping args) {
- object who = args["who"];
- who->remove_skill_modifier(&skill_mod);
- who->remove_attribute_modifier(&attribute_mod);
- Interval_Remove(#'melange_recharge);
- }
- void configure() {
- ::configure();
- set_creator("starhound");
- set_credits("Frank Herbert");
- set_identity(([
- Identity_Nouns : ({ "glove", "left glove" }),
- Identity_Name : ({ "Fedaykin" }),
- Identity_Flags : Identity_Flag_Proper,
- Identity_Special_Names : ({ "MELANGE_GLOVE" }),
- ]));
- set_identify_skills(([
- Skill_Armour_Lore : 40,
- Skill_Legend_Lore : 50,
- Skill_Arcane_Lore : 30,
- ]));
- armour()->set_armour_type(Armour_Type_Left_Glove);
- armour()->set_race("tuatha");
- set_craft(Craft_Exquisite);
- set_melange_content(100);
- add_description(({
- "This is", 'a', Description(Description_Type_Craftsmanship_Adjective),
- Description(Description_Type_Armour_Type_Name),
- "created from",
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Bulk,
- ]),
- ])),
- }));
- add_description(({
- 'a',
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Lining,
- ]),
- ])),
- "lining is located inside the",
- Description(Description_Type_Armour_Type_Name),
- "to provide", 'a', "extra degree of comfort for when it's worn",
- }));
- add_description(({
- "It has", 'a',
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Weave,
- ]),
- ])),
- "woven into it for seams to hold the",
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Lining,
- ]),
- ])),
- "in place",
- }));
- add_description(({
- "There is",
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Inset,
- ]),
- ])),
- "embedded into", ({ 't', "outside" }), "of the",
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Bulk,
- ]),
- ])),
- }));
- add_known_description(({
- 'v', ({ "recognize", 'v' }), ({ 'v', 0 }), "as", Description(Description_Type_Object_Name),
- }));
- add_known_description(({
- 'v', "know this to be crafted using", ({ 't', "intestines" }), "of",
- 'a', "sand trout to provide the most purest spice",
- }));
- add_known_description(({
- "Inside the",
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Lining,
- ]),
- ])),
- "there is", 'a', "highly concentrated",
- Description(([
- Description_Type : Description_Type_Element_Name,
- Description_Flags : Description_Flag_Noun,
- Description_Index : ([
- Element_Part : Part_Underlayer,
- ]),
- ])),
- "which is released into", ({ 't', "bloodstream" }), "of", ({ 't', "wearer" }),
- }));
- add_proportion(([
- Element_Type : Material_Leather,
- Element_Proportion : 1.0,
- Element_Color : "gleaming amber",
- Element_Part : Part_Bulk,
- ]));
- add_proportion(([
- Element_Type : Material_Melange,
- Element_Proportion : 0.5,
- Element_Part : Part_Underlayer,
- Element_Form : Form_Mesh,
- Element_Color : "bright orange",
- Element_Flags : Element_Flag_Suppress_Color_Name,
- ]));
- add_proportion(([
- Element_Type : Material_Dweomer,
- Element_Proportion : 0.3,
- Element_Part : Part_Aura,
- ]));
- add_proportion(([
- Element_Type : Material_Silk,
- Element_Proportion : 0.1,
- Element_Color : "rose",
- Element_Part : Part_Lining,
- ]));
- add_proportion(([
- Element_Type : Material_Silver,
- Element_Proportion : 0.1,
- Element_Color : "white",
- Element_Part : Part_Weave,
- Element_Form : Form_Thread,
- Element_Flags : Element_Flag_Suppress_Color_Name,
- ]));
- add_proportion(([
- Element_Type : Material_Steel,
- Element_Proportion : 0.1,
- Element_Color : "bright gray",
- Element_Part : Part_Inset,
- Element_Form : Form_Studding,
- Element_Flags : Element_Flag_Suppress_Part_Description |
- Element_Flag_Suppress_Description |
- Element_Flag_Suppress_Color_Name |
- Element_Flag_Suppress_Material_Name,
- ]));
- set_global_rarity(Rarity_Very_Exotic);
- set_unique(True);
- set_keep_cost(Keep_Cost_Unique_High);
- add_hook(Do_Equip_Item, #'glove_do_equip);
- add_hook(Do_Unequip_Item, #'glove_do_unequip);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement