/** * Copyright (c) ©2000,2001 Sony Online Entertainment Inc. * All Rights Reserved * * Title: leader_inv.script * Description: inventory script for mediator leader in POI wounded * @author $Author: rpalacio $ * @version $Revision: #1 $ */ /***** INCLUDES ********************************************************/ include library.poi; include library.scenario; include library.healing; include library.consumable; /***** INHERITS ********************************************************/ inherits item.container.add_only; /***** CONSTANTS *******************************************************/ const int PROVIDED_MEDICINE = 4; /***** TRIGGERS *******************************************************/ trigger OnAttach() { return SCRIPT_CONTINUE; } trigger OnInitialize() { return SCRIPT_CONTINUE; } trigger OnAboutToReceiveItem(obj_id srcContainer, obj_id transferer, obj_id item) { obj_id actor = getContainedBy(self); if ( (actor == null) || (actor == obj_id.NULL_ID) ) { return SCRIPT_OVERRIDE; } obj_id poiMaster = poi.getBaseObject(actor); if ( (poiMaster == null) || (poiMaster == obj_id.NULL_ID) ) { LOG("poiWounded", "OnStartNpcConversation: unable to locate base object"); return SCRIPT_CONTINUE; } string convo = getStringObjVar(poiMaster, scenario.VAR_SCENARIO_CONVO); if ( convo.equals("") ) { LOG("poiWounded", "OnStartNpcConversation: unable to determine conversation file"); return SCRIPT_CONTINUE; } if ( isPlayer(transferer) ) { if ( !healing.isMedicine(item) ) { scenario.say(actor, convo, "item_not_medicine"); return SCRIPT_OVERRIDE; } } return SCRIPT_CONTINUE; } trigger OnReceivedItem(obj_id srcContainer, obj_id transferer, obj_id item) { obj_id actor = getContainedBy(self); if ( (actor == null) || (actor == obj_id.NULL_ID) ) { return SCRIPT_OVERRIDE; } obj_id poiMaster = poi.getBaseObject(actor); if ( (poiMaster == null) || (poiMaster == obj_id.NULL_ID) ) { LOG("poiWounded", "OnStartNpcConversation: unable to locate base object"); return SCRIPT_CONTINUE; } string convo = getStringObjVar(poiMaster, scenario.VAR_SCENARIO_CONVO); if ( convo.equals("") ) { LOG("poiWounded", "OnStartNpcConversation: unable to determine conversation file"); return SCRIPT_CONTINUE; } if ( isPlayer(transferer) ) { if ( healing.isMedicine(item) ) { int cnt = getIntObjVar(item, consumable.VAR_CONSUMABLE_CHARGES); obj_id[] actors = scenario.getActorsWithNamePrefix(poiMaster, scenario.MEDIATOR); if ( (actors == null) || (actors.length == 0) ) { } else { boolean assisted = false; for ( int i = 0; i < cnt; i++ ) { obj_id wounded = getFirstWoundedActor(actors); if ( wounded == null ) { i = cnt; } } if ( assisted ) { scenario.setPlayerProgress(transferer, PROVIDED_MEDICINE); //give reward scenario.say(actor, convo, "m_reward"); int amt = 0; attrib_mod[] mods = getAttribModArrayObjVar(item, consumable.VAR_CONSUMABLE_MODS); if ( (mods == null) || (mods.length == 0) ) { } else { for ( int n = 0; n < mods.length; n++ ) { amt += mods[n].getValue(); } } amt *= cnt; obj_id wounded = getFirstWoundedActor(actors); if ( wounded == null ) { scenario.say(actor, convo, "m_all_healed"); poi.complete(poiMaster); //give bonus! amt *= 1.25f; } amt /= 10; dictionary d = new dictionary(); d.put("target", transferer); d.put("amt", amt); messageTo(actor, "giveReward", d, 0, false); } destroyObject(item); } } } return SCRIPT_CONTINUE; } /***** FUNCTIONS *******************************************************/ boolean healActorWounds(obj_id actor, int[] wounds) { if ( (actor == null) || (wounds == null) || (wounds.length == 0) ) { return false; } attribute[] maxAttribs = getUnmodifiedMaxAttribs(actor); for ( int i = 0; i < maxAttribs.length; ++i ) { int woundVal = wounds[i]; if ( woundVal > 0 ) { addAttribModifier(actor, maxAttribs[i].getType(), maxAttribs[i].getValue(), 0, 0, MOD_POOL); } } return true; } obj_id getFirstWoundedActor(obj_id[] actors) { return null; } /***** MESSAGEHANDLER *******************************************************/