User talk:Kymara

From Arianne
Revision as of 11:02, 14 November 2010 by imported>Kymara (npc to lend kitchen tools)
Jump to navigation Jump to search

converting xml path nodes to java

sed 's|</parameter>|));|' node > node2
sed 's|<parameter name="node[0-9]*">|nodes.add(new Node(|' node2 > node3

cleanup postman table

<source lang="sql"> CREATE TABLE IF NOT EXISTS temp_postman ( source VARCHAR(64),

target     VARCHAR(64),
message    TEXT);

LOAD DATA LOCAL INFILE '/home/katie/workspace/stendhal/postmantable.csv' INTO TABLE temp_postman FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';


insert into postman (source, target, message, timedate, messagetype, delivered) select source, target, message, '2010-07-20 00:00:00', 'P', 0 from temp_postman;

-- yes thats a lie about the message type, some came from npcs update postman set messagetype = 'N' where source in ('MrTaxman','Dagobert','Harold','Wilfred');


-- add indices on target and delivered (combined?)

-- remove messages where the target does not correspond to an existing character name delete postman from postman left join characters on characters.charname = postman.target where characters.charname is null;

-- remove messages where the target account.username is permanently banned (why do this first? it might get more?) delete postman from postman join account on account.username = postman.target where account.status='banned';

-- remove messages where the target character has an account which is is permanently banned delete postman from postman join characters on characters.charname = postman.target join account on account.id = characters.player_id where account.status='banned';

-- remove any uncaught spam? delete from postman where source = 'Harold' and length(message)>1000;

-- postman used to be case sensitive on target and so there were some really ancient messages in there delete postman from postman join characters ON characters.charname = postman.target where characters.charname not like binary postman.target;

-- empty messages (1 was delivered was from new version) delete from postman where message = and delivered =0;

</source>

Stuff to do, over time

  • Correct some of the warnings in findbugs:
    • Blackjack
    • Help tomi string append
    • Portal cast
  • Review golden orc sword quest that's in feature requests
  • Create quests pointing to dungeons
  • Postman on website
  • one player area access portals in banks
  • equipment refactoring (right click equip, swapping items over existing items in slots)
  • Stendhal Quest Histories - can we get some smart default methods in? or use existing actions?

npc to lend kitchen tools

games.stendhal.server.maps.semos.baker.ShopAssistantNPC Idea: have erna lend out pestle and mortar or sugar mill and expect them back after a certain time. If you don't bring them back but want to borrow another thing, you have to pay for the previous.

<source lang = "java"> // define a COST int 3000 ? // String QUEST_SLOT = "borrow_kitchen_equipment";

addOffer("Our pizza delivery team can #borrow some kitchen equipment from me.");

add(ConversationStates.ATTENDING, "borrow",

   new LevelLessThanCondition(6), 
   ConversationStates.ATTENDING, 
   "Oh sorry, I don't lend equipment to people with so little experience as you.",
   null);

add(ConversationStates.ATTENDING, "borrow",

   new AndCondition(new LevelGreaterThanCondition(5), new QuestNotCompletedCondition("pizza_delivery")),  
   ConversationStates.ATTENDING, 
   "You'll have to speak to Leander and ask if you can help with the pizza before I'm allowed to lend you anything.",
   null);

add(ConversationStates.ATTENDING, "borrow",

   new AndCondition(
       new LevelGreaterThanCondition(5), 
       new QuestCompletedCondition("pizza_delivery"),
       new QuestNotActiveCondition(QUEST_SLOT)), 
   ConversationStates.ATTENDING, 
   "I lend out #'pestle and mortar' and #'sugar mill'.", 

// say items from a list would be better

   null);

// player already has borrowed something it didn't return add(ConversationStates.ATTENDING, "borrow",

   new QuestActiveCondition(QUEST_SLOT)),  
   ConversationStates.QUEST_ITEM_QUESTION, 
   "You didn't #return what I last lent you! You must return it, or you can #pay for it if you lost it. That's " + COST + " money.",
   null);

// player wants to pay for previous item final List<ChatAction> payment = new LinkedList<ChatAction>(); payment.add(new DropItemAction("money", COST)); payment.add(new SetQuestAction(QUEST_SLOT, "done")); payment.add(new DecreaseKarmaAction(10)); add(ConversationStates.QUEST_ITEM_QUESTION, "pay",

   new PlayerHasItemWithHimCondition("money", COST),  
   ConversationStates.ATTENDING, 
   "Thanks. Just let me know if you want to #borrow any tools again.",
   new MultipleActions(payment));

// player already has borrowed something and wants to return it final List<ChatAction> return = new LinkedList<ChatAction>(); return.add(new DropRequiredItemAction(QUEST_SLOT)); return.add(new SetQuestAction(QUEST_SLOT, "done")); add(ConversationStates.QUEST_ITEM_QUESTION, "return",

   new QuestActiveCondition(QUEST_SLOT)),  
   ConversationStates.ATTENDING, 
   "Thank you! Just let me know if you want to #borrow any tools again.",
   new MultipleActions(return));

// TODO: a block of saying the item name and storing that item name into the quest slot, and giving the item.

</source>