Files
2016-03-06 20:52:14 +01:00

253 lines
7.8 KiB
Plaintext

/////////FOR LOGGING TO STATS FILE/////////
//Called in tickets New() in datacore.dm
/proc/statlog_ticket(var/datum/ticket/T, var/mob/living/M)
var/message[] = new()
message["data_type"] = "tickets"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["target"] = T.target
message["reason"] = T.reason
message["issuer"] = M.real_name
message["issuer_job"] = M.job
message["target_byond_key"] = T.target_byond_key
message["issuer_byond_key"] = M.key
hublog << list2params(message)
//Called in fines New() in datacore.dm
/proc/statlog_fine(var/datum/fine/F, var/mob/living/M)
var/message[] = new()
message["data_type"] = "fines"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["byond_uid"] = F.ID
message["target"] = F.target
message["reason"] = F.reason
message["issuer"] = M.real_name
message["issuer_job"] = M.job
message["amount"] = F.amount
message["target_byond_key"] = F.target_byond_key
message["issuer_byond_key"] = M.key
hublog << list2params(message)
//Called in crittergauntlet.dm
/proc/statlog_gauntlet(var/mobs, var/final_score, var/last_completed_wave)
if (final_score == 0 && last_completed_wave < 2)
return
var/message[] = new()
message["data_type"] = "gauntlet_high_scores"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["names"] = mobs
message["score"] = final_score
message["highest_wave"] = last_completed_wave
hublog << list2params(message)
//Called in living death() in living.dm
/proc/statlog_death(var/mob/living/M,var/gibbed)
var/message[] = new()
message["data_type"] = "deaths"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["mob_name"] = M.real_name
message["mob_job"] = M.job
message["mob_byond_key"] = M.key
var/atom/T = get_turf(M)
if (!T) T = M
message["x"] = T.x
message["y"] = T.y
message["z"] = T.z
message["bruteloss"] = M.get_brute_damage()
message["fireloss"] = M.get_burn_damage()
message["toxloss"] = M.get_toxin_damage()
message["oxyloss"] = M.get_oxygen_deprivation()
message["gibbed"] = gibbed ? 1 : 0
hublog << list2params(message)
//Called in syndicate and integrated Topic() in uplinks.dm
/proc/statlog_traitor_item(var/mob/living/M, var/itemIdentifier, var/cost)
if (!istype(M))
return 1
var/message[] = new()
message["data_type"] = "traitor_items"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["mob_name"] = M.real_name
message["mob_job"] = M.job
message["mob_byond_key"] = M.key
var/atom/T = get_turf(M)
if (!T) T = M
message["x"] = T.x
message["y"] = T.y
message["z"] = T.z
message["item"] = itemIdentifier ? itemIdentifier : "???"
message["cost"] = isnum(cost) ? "[cost]" : "0"
hublog << list2params(message)
//Called in gameticker.dm in proc/declare_completion
/proc/statlog_traitors()
var/list/datum/mind/traitors = get_all_enemies()
for (var/datum/mind/M in traitors)
var/message[] = new()
message["data_type"] = "traitors"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["mob_name"] = M.current.real_name
message["mob_job"] = M.current.job
message["mob_byond_key"] = M.key
if (M.objectives)
var/overallSuccess = 1
var/count = 1
for(var/datum/objective/objective in M.objectives)
#ifdef CREW_OBJECTIVES
if (istype(objective, /datum/objective/crew)) continue
#endif
message["objective[count]"] = objective.explanation_text
if(objective.check_completion())
message["success[count]"] = 1
else
message["success[count]"] = 0
overallSuccess = 0
count++
message["success"] = overallSuccess
message["objective_count"] = count - 1
var/traitor_type = M.special_role
message["traitor_type"] = traitor_type
var/special
switch(traitor_type)
if ("changeling")
if (M.current)
var/datum/abilityHolder/changeling/C = M.current.get_ability_holder(/datum/abilityHolder/changeling)
if (C && istype(C))
special = C.absorbtions
if ("vampire")
if (M.current)
special = M.current.get_vampire_blood(1)
if ("wizard")
if (M.current)
var/datum/abilityHolder/wizard/W = M.current.get_ability_holder(/datum/abilityHolder/wizard)
if (W && istype(W))
var/spells = ""
for (var/datum/targetable/spell/S in W.abilities)
if (spells != "")
spells += ", "
spells += S.name
if ("werewolf")
for (var/datum/objective/specialist/werewolf/feed/O in M.objectives)
if (O && istype(O, /datum/objective/specialist/werewolf/feed/))
special = O.mobs_fed_on.len
if ("vampthrall")
if (M.master)
var/mob/mymaster = whois_ckey_to_mob_reference(M.master)
if (mymaster) special = mymaster.real_name
if ("spyslave")
if (M.master)
var/mob/mymaster = whois_ckey_to_mob_reference(M.master)
if (mymaster) special = mymaster.real_name
if ("mindslave")
if (M.master)
var/mob/mymaster = whois_ckey_to_mob_reference(M.master)
if (mymaster) special = mymaster.real_name
if ("nukeop")
if (istype(ticker.mode, /datum/game_mode/nuclear))
special = syndicate_name()
if (ticker.mode:nuke_detonated)
message["success"] = 1
message["special"] = special
if (M.late_special_role)
message["late_joiner"] = 1
/*else if (M.random_event_special_role)
message["random_event"] = 1*/
else
message["late_joiner"] = 0
//message["random_event"] = 0
hublog << list2params(message)
//BEES
/proc/statlog_bees(var/obj/critter/domestic_bee/B)
var/message[] = new()
message["data_type"] = "bees"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["name"] = B.name
if(B.beeMom)
message["mom"] = B.beeMom.real_name
hublog << list2params(message)
//Called in gameticker.dm at proc/declare_completion, ai_laws.dm at set_zeroth_law and add_supplied_law
/proc/statlog_ailaws(var/during, var/law, adder)
//For individual laws
if (during)
var/message[] = new()
message["data_type"] = "ai_laws"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
if (ismob(adder))
var/mob/M = adder
message["uploader_name"] = M.real_name
message["uploader_key"] = M.key
message["uploader_job"] = M.job
else
message["uploader_name"] = "Ion Storm"
message["uploader_key"] = "Random Event"
message["uploader_job"] = ""
message["type"] = "during"
message["law_text"] = html_decode(law)
hublog << list2params(message)
return 1
//For end of round laws
else
for (var/mob/living/silicon/ai/aiPlayer in mobs)
var/laws[] = new()
if (ticker.centralized_ai_laws.zeroth)
laws["0"] = ticker.centralized_ai_laws.zeroth
var/list/suppliedLaws = ticker.centralized_ai_laws.supplied
var/count = 4
for (var/i = 1, i <= suppliedLaws.len, i++)
var/lawText = suppliedLaws[i]
if (length(lawText) > 0)
laws["[count]"] = lawText
count++
for (var/key in laws)
var/message[] = new()
message["data_type"] = "ai_laws"
message["data_status"] = "insert"
message["data_timestamp"] = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
message["ai_name"] = aiPlayer.real_name
message["ai_key"] = aiPlayer.key
message["type"] = "end"
message["law_number"] = key
message["law_text"] = html_decode(laws[key])
hublog << list2params(message)
return 1